错误:输入'class'不是'class'的直接基础
问题描述:
我一直无法找到与我的问题有关的答案。就我看到的情况而言,这有点“奇怪”。错误:输入'class'不是'class'的直接基础
所以我有一个类Child2
继承自Child1
,继而从Parent
继承。 Parent
没有构造函数。
这里是我如何继承:
Child1.h:
class Child1 : virtual public Parent
这是我想从Child2
的构造函数中调用该函数:
void Child1::foo(unsigned int i)
{
// ...
}
Child2
Child2::Child2() : Child1()
{
foo(10);
}
Child2
中没有foo()
的功能,所以如果我理解正确,不应该有任何含糊之处。
不过,我会遇到这样的错误:
Child2.cpp: In constructor ‘Child2::Child2()’: Child2.cpp:12:28: error: type ‘Child1’ is not a direct base of ‘Child2’ Child2::Child2() : Child1()
Child1
的构造是工作,所以我离开了出来。在这种情况下,我不确定它是否重要。
答
检查您的Child2类是否被声明为Child1的子级。例如:
class Child2 : Child1
{....}
在这种情况下,您可能忽略了很多重要的内容。你需要提供[mcve]。毕竟,如果你不知道问题出在哪里,你怎么知道你遗漏的东西并不是其他人需要帮助你的东西? – Peter
请分享'foo'函数的声明。 – MKR