错误:输入'class'不是'class'的直接基础

错误:输入'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的构造是工作,所以我离开了出来。在这种情况下,我不确定它是否重要。

+2

在这种情况下,您可能忽略了很多重要的内容。你需要提供[mcve]。毕竟,如果你不知道问题出在哪里,你怎么知道你遗漏的东西并不是其他人需要帮助你的东西? – Peter

+0

请分享'foo'函数的声明。 – MKR

检查您的Child2类是否被声明为Child1的子级。例如:

class Child2 : Child1 
{....}