2012-07-25 70 views
0

我正在研究我的严重C++程序。自从我参加任何课程已经有一段时间了,所以我有点生疏。当开始游戏循环的基本实现时(在花费了大量的时间后,FOREVER让SFML工作),我不断遇到问题。过了一段时间,我试图定义一个构造函数时,我的问题清单出现错误。尝试编译时出现以下错误。声明构造函数时出现编译错误

1> game.obj:错误LNK2005: “公共:__thiscall游戏::游戏(无效)” (?? 0game @@ @ QAE XZ)在main.obj已经定义

1> game.obj:错误LNK2005:(?gameLoop @游戏@@ QAEXXZ): “公共无效__thiscall 游戏:: gameLoop(无效)” 已经在 main.obj定义

我的主要代码

​​

在game.h它

#ifndef _game_h 
#define _game_h 

class game 
{ 
public: 
    game(); 
    void gameLoop(); 
}; 

#endif 

和game.cpp它

#include <iostream> 
#include "game.h" 

game::game() 
{ 
    std::cout << "Constructed thingie"; 
} 

void game::gameLoop() 
{ 
    std::cout << "RAN LOOP!" << std::endl; 
} 

我不知道为什么我遇到了此问题。任何帮助会很好,因为我想开始我的项目。

+1

不包括主要的.cpp – lurscher 2012-07-25 21:07:37

回答

7

您应该在主要中包含#include "game.h",而不是game.cpp

+0

这只会导致game.cpp不知道类游戏是什么。即使我在game.h中包含game.cpp也不知道这应该如何帮助任何东西。 - 编辑 - 没关系。在main和game.cpp中包含game.h使得它由于某种原因被编译。 – Legacyblade 2012-07-25 21:50:28

+0

我认为你误读了,你不应该从game.cpp中删除game.h,只需用game.h替换game.cpp。 – 2012-07-25 21:55:54

+0

是的,它工作。我只是误解为“将game.h包含到main.cpp”,而不是“在main.cpp中包含game.h,而不是game.cpp”。它现在正常工作:)不知道如何关闭这个问题。 – Legacyblade 2012-07-25 23:50:24

相关问题