gpt4 book ai didi

c++ - 错误 : no matching function for call to

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:45 24 4
gpt4 key购买 nike

这是我的错误...

“在构造函数‘NumGame::NumGame(int&)’中:错误:没有匹配函数来调用“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) {

}

最佳答案

错误原因:

当您创建派生类 NumGame 的实例时,基类 Category 不会调用参数构造函数来创建对象的 Category 部分.你的类(class)没有,编译器提示它。

为什么编译器没有合成默认构造函数?

一旦你为你的类提供了任何构造函数,编译器就不会合成不带任何参数的构造函数,如果你的代码使用一个,你必须自己提供。

解决方案:

有两种方法可以避免错误:

通过 Member Initializer list 在基类Catoegory 子对象中调用适当的可用构造函数 。这消除了您的代码使用 无参数构造函数的情况。

NumGame::NumGame(int& b) : Category(b)
{

}

您需要自己为 Category 类提供无参数构造函数:

Category::Category()
{

}

关于c++ - 错误 : no matching function for call to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9682548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com