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

Posted

技术标签:

【中文标题】错误:类型“类”不是“类”的直接基础【英文标题】:error: type ‘class’ is not a direct base of ‘class’ 【发布时间】:2018-03-18 21:45:17 【问题描述】:

我无法找到与我的问题特别相关的答案。就我所看到的而言,这有点“奇怪”。

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

这是我的继承方式:

Child1.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”的直接基类 Child2::Child2() : Child1()

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

【问题讨论】:

您遗漏了很多在这种情况下可能很重要的内容。您需要提供minimal reproducible example。毕竟,如果你不知道问题出在哪里,你怎么知道你遗漏的东西不是其他人需要帮助你的? 请分享foo函数的声明。 【参考方案1】:

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

class Child2 : Child1 
....

【讨论】:

以上是关于错误:类型“类”不是“类”的直接基础的主要内容,如果未能解决你的问题,请参考以下文章

Java基础06包装类toStringequalsfinalimportstatic

《Java实战常用类》第1节:包装类

Java基础知识(JAVA基本数据类型包装类)

java基础-包装类

深入Java基础——基本数据类型及其包装类

Java基础之Object类