错误:类型'class'不是'class'的直接基础

时间:2017-10-07 04:30:11

标签: c++ class constructor base derived-class

我无法找到与我的问题有关的答案。就我所看到的而言,这是一个“奇怪”的案例。

所以我有一个继承自Child2的{​​{1}}课程Child1继承自ParentParent没有构造函数。

以下是我的继承方式:

Child1.h:

class Child1 : virtual public Parent

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

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

CHILD2

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

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

但是,我遇到了这个错误:

  

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

Child1的构造函数正在运行,所以我把它遗漏了。在这种情况下,我不确定它是否重要。

1 个答案:

答案 0 :(得分:0)

检查您的Child2类是否被声明为Child1的子级。类似的东西:

class Child2 : Child1 
{....}