シングルトンデザインパターンをコードに取り込もうとしていましたが、奇妙なエラーが発生し始めました。
main.obj : error LNK2005: "private: static class gameState * gameState::state" (?state@gameState@@0PAV1@A) already defined in gameState.obj
シングルトンパターンに慣れていない場合は、基本的に、プログラム全体で特定のオブジェクトの1つのインスタンスのみを強制するために使用されます。関連するコードは次のとおりです。gameState.h:
class gameState
{
public:
static gameState* Instance() {return state;}
.
.
.
private:
gameState();
static gameState* state;
};
gameState* gameState::state = new gameState();
そして今、私はmain.cppファイルでそのオブジェクトのインスタンスを使用しています:
gameState *currState = gameState::Instance();
.
.
.
for_each(currState->getHumanPieces().begin(),currState->getHumanPieces().end(), drawPieces);
gameState :: stateを再定義しようとしているように見えますが、理由がわかりません...誰かを助けますか?
それはそれを解決しましたが、1つのエラーがまだ残っています。これは、他のエラーの一部であると思ったため、以前は実際に投稿していませんでした。
error LNK2019: unresolved external symbol "private: __thiscall gameState::gameState(void)" (??0gameState@@AAE@XZ) referenced in function "void __cdecl `dynamic initializer for 'private: static class gameState * gameState::state''(void)" (??__E?state@gameState@@0PAV1@A@@YAXXZ)
それを修正する方法についての良いヒントはありますか?
両方に感謝します、その固定:D