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