当我尝试编译我的代码时,我不断收到奇怪的 C4430 和 C2143 错误。我的类(class)有指向不同类(class)的数据成员,错误是说它期待一个“;”在类名和“*”之间。这是我的类(class)摘要:
#include "CarStack.h"
#include "CarQueue.h"
#include "CarDeque.h"
#include "base_class.h"
class my_class : public base_class
{
public:
//Member Functions
private:
//Other data members
CarStack* car_stack;
CarQueue* car_queue;
CarDeque* car_deque;
};
错误来自那些类指针。为什么我会得到这样的错误?我缺少什么重要的东西吗?
最佳答案
如果基类或任何汽车类调用此列表中的其中一个,您将获得循环依赖性。对此有很多解决方案。
我发现最好的解决方案:从我最近的 opengl 项目“Include.h”中复制粘贴包含:
#ifndef _INCLUDE_H
#define _INCLUDE_H
#include <Windows.h>
#include "SDL.h"
#include "gl/gl.h"
#incldue "gl/glu.h"
#include "Most Derived Classes"
#include "Most Derived Classes"
#endif
然后,只需在项目的主驱动程序文件的开头使用#include "Include.h"
。然后,只包含派生类的基本 header 。
我认为这是一堆前向声明的更好解决方案,IMO。
关于C++ 错误,类指针作为另一个类中的数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12926470/