错误:“类”类型不是“类”的直接基数

error: type ‘class’ is not a direct base of ‘class’

本文关键字:类型 错误      更新时间:2023-10-16

我无法找到与我的问题特别相关的答案。就我所看到的情况而言,这是一个有点"奇怪"的案例。

所以我有一个类Child2继承自Child1,而又继承自ParentParent没有构造函数。

以下是我继承的方式:

儿童1.h:

class Child1 : virtual public Parent

这是我想从Child2的构造函数调用的函数:

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

儿童2

Child2::Child2() : Child1()
{
   foo(10);
}

Child2中没有称为foo()的函数,因此如果我理解正确,应该不会有任何歧义。

但是,我遇到此错误:

Child2.cpp:在构造函数 'Child2::

Child2()' 中: Child2.cpp:12:28:错误:类型"Child1"不是"Child2"的直接基础 儿童2::儿童2() : 儿童1()

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

检查您的 Child2 类是否声明为 Child1 的子类。像这样:

class Child2 : Child1 
{....}