大家好,并提前感谢您的帮助。我有以下类在编译我声明指针向量
的位置时抛出错误我有一个Engine类,我想托管存储在矢量sceneList中的多个场景对象,然后传递我想要渲染到SceneBase指针
#pragma once
#include "Matrix3D.h"
#include "SceneBase.h"
#include <vector>
class Engine
{
public:
static float deltaTime;
Engine();
~Engine();
void Init(int argc, char* argv[]);
void Run();
/* Forward declared GLUT callbacks registered by main. */
static void Display();
static void Update();
static void Keyboard(unsigned char c, int x, int y);
static void Resize(int width, int height);
static Matrix3D perspective;
private:
//static SceneBase *scene;
static float previousTime;
vector<SceneBase*> scenesList;
};
为以下每个错误代码2143,4430,2238抛出三个错误代码。 另外,我有以下标题,它还实现了一个不会抛出任何错误的指针向量
#pragma once
#include "OpenGLRenderer.h"
#include "BaseObject.h"
#include "TextureManager.h"
#include <vector>
#include <iostream>
#include "Engine.h"
#include "Matrix3D.h"
using namespace std;
class SceneBase
{
public:
SceneBase();
virtual ~SceneBase();
virtual void Init() = 0;
virtual void Draw() = 0;
virtual void Update() = 0;
protected:
//List holding all objects in scene
vector<BaseObject*> list;
OpenGLRenderer rendererGL;
TextureManager textureManager;
};
在Engine.h上如果我改变了矢量scenesList;到std :: vector scenesList;不会抛出错误2143,而是抛出所有其他错误。谁能指出我所缺少的东西?为什么这适用于SceneBase.h而不是Engine.h?
由于
答案 0 :(得分:1)
您的两个标题文件 SceneBase.h 和 Engine.h 彼此包含错误。在头文件中使用前向声明,以便你有类似的东西:
a.h 中的
在 .cpp 文件中,您可以安全地包含文件
b.h中class b;
class a
{
// class a stuff goes here
}
class a;
class b
{
// class b stuff goes here
}