2015-03-02 129 views
1

我從來沒有在代碼塊中遇到這個問題,但是在Visual Studio類中,我給出錯誤LNK2005 ...已經在xx.obj中定義了。我讀過許多答案,其中大部分說使用「的extern」我不認爲這是在成員函數成員函數已經在.obj中定義(視覺工作室)

Error: 1>Source.obj : error LNK2005: "public: __thiscall Game::Game(void)" ([email protected]@[email protected]) already defined in game.obj 

Error: fatal error LNK1169: one or more multiply defined symbols found 

可我怎樣才能解決這個不暴力破解/允許多個定義?

//game.h 

#ifndef GAME_H 
#define GAME_H 

#include <SFML/Graphics.hpp> 

class Game 
{ 
    public: 
     Game(); 

    private: 
     sf::RenderWindow mWindow; 
     sf::CircleShape mPlayer; 
}; 

#endif 

//game.cpp 

#include "..\Headers\game.h" 

Game::Game() 
    : mWindow(sf::VideoMode(640, 480), "Beginning") 
    , mPlayer() 
{ 
    mPlayer.setRadius(40.f); 
    mPlayer.setPosition(100.f, 100.f); 
    mPlayer.setFillColor(sf::Color::Cyan); 
} 

//source.cpp 

#include "game.cpp" 

int main() 
{ 
    Game game; 
} 

回答

4

通過

#include "game.h" 

你不應該包括*的.cpp替換您的source.cpp

#include "game.cpp" 

+0

非常感謝,我是個白癡。讓反對票開始 – 2015-03-02 22:14:50