声明构造函数时编译错误

时间:2012-07-25 21:05:21

标签: c++ constructor visual-c++-2008

我正在研究我认真的c ++程序。自从我参加任何课程以来已经有一段时间了,所以我有点生疏了。当开始游戏循环的基本实现时(在花费很多东西让SFML工作之后),我不断遇到问题。过了一会儿,我在尝试定义构造函数时得到了我的问题列表。尝试编译时出现以下错误。

  

1> game.obj:错误LNK2005:“public:__ thiscall game :: game(void)”   (?? 0game @@ QAE @ XZ)已在main.obj中定义

     

1> game.obj:错误LNK2005:“public:void __thiscall   game :: gameLoop(void)“(?gameLoop @ game @@ QAEXXZ)已定义于   main.obj

我的主要代码是

#include <SFML/Graphics.hpp>

#include "game.cpp"

int main()
{
    return 0;
}
在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 个答案:

答案 0 :(得分:7)

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