1. ホーム
  2. c++

[解決済み] error: no matching function for call to

2022-02-24 22:35:52

質問

私のエラーはこれです。

"コンストラクタ 'NumGame::NumGame(int&)' 内にあります。 error: no matching function for call to 'Category::Category()'"

このサイトで似たような質問をいくつか見ましたが、答えが見つからないようです。Categoryという基底クラスがあり、NumGameはそこから継承されているのですが、コンパイルができません。

class Category {

public:
    void virtual selection(int&);
    Category(int&);
    virtual ~Category(){};
private:
    int myRandNum;
};

Category::Category(int& a){
    myRandNum = a;
}

void Category::selection(int& a){
    cout << "I am NumGame version number... " << a << endl;
    cout << "Now Im playing... " << myRandNum << endl;
}

class NumGame : public Category {

public:
    void selection(int&);
    NumGame(int&);
    ~NumGame(){};
private:
    int myRandNum;
};

NumGame::NumGame(int& b){
    myRandNum = b;
}

void NumGame::selection(int& b) {

}

解決方法は?

Category にはデフォルトのコンストラクタがないため、引数を指定する必要があります。 Category のベースオブジェクトです。 NumGame :

NumGame::NumGame(int& b) :
    Category(b)
{
    myRandNum = b;
}