编译器无法编译继承 C++
compiler cannot compile inheritance c++
>假设我有一个包含这两个类的标头
class A:public class B{
// code
};
class B
{
protected:
A a_object;
};
当编译器编译这个包含文件时,当涉及到A类时,它看到A类继承自B,但它没有达到B类定义。所以它给出了一个错误。如果我颠倒两个类的顺序,它会由于a_object而出错,因为它看不到 A 类定义。
那么如何解决这个问题呢?并假设我限制在这个包含文件具有类 A 和 B 定义。
谢谢
以下是问题的简化版本:
class X {
X x;
};
类不能嵌入其自己的类型的对象。
具体来说,你的类B
嵌入一个类型为 A
的对象,通过继承,该对象也是 B
类型。
如果你真的必须有一个这样的层次结构,你可以做如下的事情。
class A;
class B
{
protected:
A* a_object;
};
class A: public B {
// code
};
相关文章:
- 继承函数的重载解析
- 继承期间显示未知行为的子类
- 头文件-继承c++
- 为什么在保护模式下继承升级不起作用
- 通过继承类使用来自不同命名空间的运算符
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 混合组合和继承的C++问题
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 从类继承时,继承的类是否会通过父类重新定义继承的变量
- 公共与私人继承
- 如何创建从同一类继承的不同对象的向量
- 如何从另一个文件继承私有成员变量和公共函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 带有继承的C++工厂
- 我应该避免多重实现继承吗
- C++继承更改成员
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 关于C++中具有多重继承"this"指针的说明
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 如何在QT Creator上将QWidget声明为继承类的对象