vector <class *>编译器错误2143,4430,2238 </class *>

时间:2014-03-02 07:20:52

标签: c++ vector

大家好,并提前感谢您的帮助。我有以下类在编译我声明指针向量

的位置时抛出错误

我有一个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?

由于

1 个答案:

答案 0 :(得分:1)

您的两个标题文件 SceneBase.h Engine.h 彼此包含错误。在头文件中使用前向声明,以便你有类似的东西:

a.h

中的

class b;

class a
{
// class a stuff goes here
}
b.h中

class a;
class b
{
// class b stuff goes here
}

.cpp 文件中,您可以安全地包含文件