编译器无法编译继承 C++

compiler cannot compile inheritance c++

本文关键字:继承 C++ 编译 编译器      更新时间:2023-10-16

>假设我有一个包含这两个类的标头

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
};