error C2504:头文件包含不全
今天碰到了很烦的问题,继承一个类之后,感觉头文件都包含了,可还是出现父类未定义的问题,最后发现,子类的子类在实现时,需要在cpp文件中包含所有他的父类的定义。因为每个cpp文件是单独编译的,需要知道其所有父类来确定这个类的大小和实现的细节。
实例代码如下:
//a.h
class A{
public:
virtual void fun()=;
};
//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;
}