繁体   English   中英

继承类的默认构造函数

[英]Default constructor for an inherited class

我已将问题减少到以下示例代码:

class pokemon{
    public:
        pokemon(int n);
};

class MewTwo : public pokemon {
    public:
        MewTwo(int n);
};

MewTwo::MewTwo(int n) {}

这会产生错误:

没有匹配函数来调用'pokemon :: pokemon()'

认为正在发生的是当我尝试编写MewTwo构造函数时,调用pokemon的默认构造函数,该构造函数不存在。 我对C ++比较陌生,所以我只想猜测一下。 有任何想法吗?

约束:修复不能修改或添加公共成员到类。

实际上你要找的是成员初始化列表。 将继承的类构造函数更改为以下内容:

class MewTwo : public pokemon {
    public:
        MewTwo(int n) : pokemon(n) {}
};

你在确定发生了什么是正确的。 基本上,当您创建继承的类时,首先要创建基类,而不能这样做,因为没有定义默认构造函数。 成员初始化列表可以帮助您解决:)

查看: http//www.cprogramming.com/tutorial/initialization-lists-c++.html了解更多示例!

尝试这个 :

class pokemon{
    public:
        pokemon(int n);
};

class MewTwo : public pokemon {
    public:
        MewTwo(int n) :pokemon(n){}
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM