我是C ++继承的新手,并决定尝试一些实验来了解这个主题。
下面的代码显示了我创建的类的层次结构:
classes.h
base::base(int a, int b)
{
// ...
}
classes.c
{{1}}
编译器向我显示消息:
没有用于调用sub_one :: sub_one()
的匹配函数没有用于调用sub_one :: sub_one()
的匹配函数没有用于调用sub_two :: sub_two()
的匹配函数没有用于调用sub_two :: sub_two()
的匹配函数
我无法找出问题所在。
答案 0 :(得分:2)
sub_three(int a, int b, int c = 0) : base(a, b)
{
// do something
}
相当于:
sub_three(int a, int b, int c = 0) : base(a, b), sub_one(), sub_two()
{
// do something
}
由于sub_one
和sub_two
中没有此类构造函数,编译器会报告错误。您可以将默认构造函数添加到sub_one
和sub_two
以删除错误。
答案 1 :(得分:1)
sub_three
构造函数初始化base
,并调用不存在的sub_one
和sub_two
的默认构造函数,您可能需要
class sub_three : public sub_one, public sub_two
{
private:
bool flag;
public:
sub_three(int a, int b, int c = 0)
: base(a, b), sub_one(a,b), sub_two(a,b,c), flag(false)
{
// do something
}
};