C++ 错误:类型‘;类别’;不是‘;类别’;

C++ 错误:类型‘;类别’;不是‘;类别’;,c++,class,constructor,base,derived-class,C++,Class,Constructor,Base,Derived Class,我还没有找到一个与我的问题具体相关的答案。就我所看到的而言,这有点“奇怪” 因此,我有一个类Child2,它继承自Child1,然后又继承自父类。父级没有构造函数 我是这样继承的: Child1.h: class Child1 : virtual public Parent 这是我想从Child2的构造函数调用的函数: void Child1::foo(unsigned int i) { // ... } Child2 Child2::Child2() : Child1() {

我还没有找到一个与我的问题具体相关的答案。就我所看到的而言,这有点“奇怪”

因此,我有一个类
Child2
,它继承自
Child1
,然后又继承自
父类。父级
没有构造函数

我是这样继承的:

Child1.h:

class Child1 : virtual public Parent
这是我想从
Child2
的构造函数调用的函数:

void Child1::foo(unsigned int i)
{
    // ...
}
Child2

Child2::Child2() : Child1()
{
   foo(10);
}
Child2
中没有名为
foo()
的函数,因此如果我理解正确,应该不会有任何歧义

但是,我遇到了以下错误:

Child2.cpp:在构造函数“Child2::Child2()”中: Child2.cpp:12:28:错误:类型“Child1”不是“Child2”的直接基 Child2::Child2():Child1()


Child1
的构造函数正在工作,所以我忽略了它。我不确定它在这种情况下是否重要。

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

class Child2 : Child1 
{....}

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

class Child2 : Child1 
{....}

你漏掉了很多在这种情况下可能很重要的东西。你需要提供一个有效的解决方案。毕竟,如果你不知道问题是什么,你怎么知道你漏掉的东西不是其他人需要帮助的东西呢?请分享
foo
函数的声明。在这种情况下,你漏掉了很多可能很重要的东西。你需要提供一个有效的解决方案。毕竟,如果你不知道问题是什么,你怎么知道你遗漏的东西不是其他人需要帮助的东西呢?请分享
foo
函数的声明。