2016-05-12 8 views
0

私はプログラムを構築しており、マウスがオブジェクト上にあるかどうかを確認する関数が必要です。プロジェクトの複数のファイルがこの機能を使用するため、この関数を書き、新しい.hpp-Fileを作成しました。ファイルはHitboxDetec.hppとなります。LNK2005 - .hppファイルの関数を宣言するときのエラー

bool isClicked(sf::Sprite* Sprite, sf::RenderWindow* pW) 
{ 
    int MOUSE_X = sf::Mouse::getPosition(*pW).x; 
    int MOUSE_Y = sf::Mouse::getPosition(*pW).y; 

    if (MOUSE_X >= Sprite->getPosition().x && 
     MOUSE_X <= Sprite->getPosition().x + Sprite->getPosition().x + 500 && 
     MOUSE_Y >= Sprite->getPosition().y && 
     MOUSE_Y <= Sprite->getPosition().y + Sprite->getPosition().y + 500) 
    { 
     return true; 
    } 
    else return false; 
} 

私は(私は私の.cppファイル内の関数を宣言することによってそれをテスト)に必要なライブラリなど、コードの作品が含まれていました。私はそれで書いた関数は次のようになります。私の.cppファイルで

私はCookieDetec.hpp - ファイルを含めて、私は私のプログラムをコンパイルするとき、それはちょうど私LNK2005:エラーを与える

if(isClicked(pSprite, pW)) {Stuff} 

でそれを呼びました。これをどうすれば解決できますか?

答えて

2

LNK2005がためのものです:

The given symbol, displayed in its decorated form, was multiply defined. 

あなたはヘッダファイルにあなたの関数を定義した場合、それは、複数の翻訳単位に含まれている場合があります。複数の定義を防止するには、この関数をインラインとしてマークします。

inline bool isClicked(sf::Sprite* Sprite, sf::RenderWindow* pW) 
^^^^^^ 
関連する問題