错误提示:
pointer to incomplete class type is not allowed
在编译时候还可能报错如下:
error C2027: use of undefined type ‘Room’
原因:
某个类型在某个成员函数被某个指向这个类型的指针调用时,还没有被完整的定义。
即前置声明中用到的类,并在此类中也用到,但没有引入头文件。
分析:
在编译C++文件时有时候遇到这个问题,其实这是因为我们使用了前向声明(forward declaration)。
定义顺序不合理。编译器遇到指针时,知道其被初始化时,才会为其分配内存。所以,如果不需要调用某个类型的成员函数,理论上讲,如果正确地声明了类型,定义的顺序是任意的。调用一定要在完整的定义以后。
解决:
定义的头文件(hpp)没有被(cpp)文件包含。添加即可。