error C2504 类的多层继承 头文件包含

error C2504:头文件包含不全

 

今天碰到了很烦的问题,继承一个类之后,感觉头文件都包含了,可还是出现父类未定义的问题,最后发现,子类的子类在实现时,需要在cpp文件中包含所有他的父类的定义。因为每个cpp文件是单独编译的,需要知道其所有父类来确定这个类的大小和实现的细节。

实例代码如下:

//a.h
class
A{ public: virtual void fun()=0; };
//b.h
class B : public A { public: virtual void fun(); };

//b.cpp #include
"a.h" void B::fun() { std::cout<<"Class B fun()"<<std::endl; }
//c.h
class C : public B { public: virtual void fun(); };
//c.cpp #include
"a.h" #include "b.h" void C::fun() { std::cout<<"Class C fun()"<<std::endl; }

 

你可能感兴趣的:(error)