让我有两个.cpp文件:a.cpp和b.cpp,它们包含如下类防御:
//a.cpp
class A
{
public:
A(){ \\some actions }
}
//b.cpp
class A;
class B : A
{
public:
B():A(){ \\some actions }
}但是在编译过程中,我有一个错误。该错误的描述如下:
ConcreteSubject.cpp:5:25:错误:无效使用不完整类型‘类主题’ConcreteSubject.cpp:3:7: ConcreteSubject.cpp:3:7: ConcreteSubject.cpp:在构造函数‘ConcreteSubject::ConcreteSubject():ConcreteSubject.cpp:21:38: ConcreteSubject.cpp:21:38: type’Subject‘的前向声明--不是ConcreteSubject的直接基础。
有可能避免#include "a.cpp"吗
发布于 2014-05-03 11:35:08
您应该将A的类声明移到头文件中,并将该头文件包含在b.cpp文件中。如果不这样做,b.cpp编译单元就无法知道A类实现(显式或隐式)的构造函数列表。
包括一个cpp文件不是一个好主意。你不应该这么做。
//a.h
class A
{
public:
A();
}
//a.cpp
A::A(){ \\some actions }
//b.cpp
#include "a.h"
class B : A
{
public:
B():A(){ \\some actions }
}https://stackoverflow.com/questions/23443859
复制相似问题