2015-02-05 90 views
-2

第一:我的英文不太好。打扰一下。C++代码块错误

我正在使用Ubuntu(我不知道这是否重要),并且自从我开始使用它之后,我遇到了Code :: Blocks问题。但我通过重新开放程序来修复它们。但是现在,编译代码时出现了一个非常疯狂的错误。我列入就像平常文件: #include "GameObjectUtility.h"

,我用类“GameObjectUtility”声明一个成员对象,就像这样:

class GameObject 
{ 
    std::vector<GameObjectUtility> uts; 
    // Error here: 
    // GameObjectUtility was not declared in this scope 
} 

所以,这是我的错,或者是有什么车与Code :: Blocks? 此外,还有一种方法告诉链接器:首先执行这个文件,然后执行另一个?

谢谢你的回答!

编辑:h和.ccp文件GameObjectUtility:

因此,这是GameObjectUtility.h:

#ifndef GAMEOBJECTUTILITY_H 
#define GAMEOBJECTUTILITY_H 

#include <string> 

#include "Collision.h" 

class GameObjectUtility 
{ 
public: 
GameObjectUtility(); 
virtual ~GameObjectUtility(); 

virtual void Update() = 0; 
virtual void LateUpdate() = 0; 
virtual void FixedUpdate() = 0; 

static void SendMsg(std::string msg); 
protected: 
private: 
    virtual void GetMsg(std::string msg) = 0; 
}; 

#endif // GAMEOBJECTUTILITY_H 

而且在GameObjectUtility.cpp只是两个构造和析构

+0

如何进行GameObjectUtility的前向声明? – 2015-02-05 16:00:31

+0

你的意思是像'类GameObjectUtility;' ? – user3739684 2015-02-05 16:01:55

+0

你可以从'GameObjectUtility.h'中看到'GameObjectUtility'的样子吗?我怀疑你得到这个错误,因为它的定义可能出现在'GameObjectUtility.cpp'中。 – 2015-02-05 16:02:47

回答

1

的空定义由于class GameObjectUtility是纯虚拟的,因此不能实例化它。

您只能将std::vector<GameObjectUtility*>存储在类GameObject中。

+0

非常感谢你 – user3739684 2015-02-05 16:14:06

+0

我只是想知道错误... – user3739684 2015-02-05 16:14:29

+0

错误仍然存​​在... – user3739684 2015-02-05 16:17:00