我已将问题减少到以下示例代码:
class pokemon{
public:
pokemon(int n);
};
class MewTwo : public pokemon {
public:
MewTwo(int n);
};
MewTwo::MewTwo(int n) {}
产生错误:
没有匹配的呼叫功能 “小宠物的小宠物::()”
我认为正在发生的事情是当我尝试编写不存在的MewTwo构造函数时,会调用pokemon的默认构造函数。我对C ++比较陌生,所以我只想猜测一下。有什么想法吗?
约束:修复无法修改或向类中添加公共成员。
答案 0 :(得分:13)
实际上你要找的是成员初始化列表。将继承的类构造函数更改为以下内容:
class MewTwo : public pokemon {
public:
MewTwo(int n) : pokemon(n) {}
};
你在确定发生了什么是正确的。基本上,当您创建继承的类时,首先要创建基类,而不能这样做,因为没有定义默认构造函数。成员初始化列表可以帮助您解决这个问题:)
查看:http://www.cprogramming.com/tutorial/initialization-lists-c++.html了解更多示例!
答案 1 :(得分:5)
试试这个:
class pokemon{
public:
pokemon(int n);
};
class MewTwo : public pokemon {
public:
MewTwo(int n) :pokemon(n){}
};