向前声明一个子类

Forward Declare a Subclass

本文关键字:一个 子类 声明      更新时间:2023-10-16

我有一个基类a在头文件A.h

class A{};

在a.p我有几个子类:

class B: public A{};
class C: public A{};

我想实例化类型B和C在一个单独的文件,但我不能看到如何,除非我包括a.p在我的其他文件。如果我像这样在A.h中声明B和C:

class B;
class C;

那么实例化类不知道它从a派生,我该如何解决这个问题?

谢谢,Eric

您需要在头文件中声明A,例如A.h,并将该文件包含到b.c p和c.c p中,此外,如果您在A中有一些非inline函数(在A声明中定义的函数隐式inline),您应该创建a.p p,也包括A.h并在a.p中定义这些函数

创建文件A.h

创建文件a.p p并包含A.h(如果需要)

创建文件B.h和C.h

包含A.h

分别在A.h,B.h,C.h 中定义类A,B,C

分别在a.p、b.p和c.p 中编写类A、B和C的成员函数

创建一个主文件并包含B.h和C.h

在主文件中实例化B和C的对象