转发声明子类

时间:2013-04-29 15:48:56

标签: c++ header-files subclassing

我在头文件A.h

中有一个基类A.
class A{};

在A.cpp中我有几个子类:

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

我想在一个单独的文件中实例化类型B和C,但除非我在其他文件中包含A.cpp,否则我无法看到。如果我在A.h中转发声明B和C,就像这样:

class B;
class C;

然后实例化类不知道它是从A派生的。我将如何解决这个问题?

谢谢, 埃里克

2 个答案:

答案 0 :(得分:0)

您需要在头文件中声明A例如Ah并将该文件包含到B.cpp和C.cpp中,如果inline中有一些非A函数,则在A声明中定义的函数是隐式inline)你应该创建A.cpp,同时包含Ah并在A.cpp中定义这些函数

答案 1 :(得分:0)

创建文件A.h

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

创建文件B.h和C.h

在两者中加入A.h

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

分别在A.cpp,B.cpp和C.cpp 中写出A,B和C类的成员函数

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

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