前提・実現したいこと
C++とDxライブラリを使ってゲームを作っています。
ゲームのセーブデータを管理するクラスをゲーム開始からゲーム終了まで保持したく
セーブデータのクラスをシングルトンモデルで確保しています。
そのモデル内で、ゲームの31個のセーブデータをVectorコンテナで管理をしたいです。
しかし、組み方と知識不足から
vectorを初期化できず、大方LINK2001のリンカーエラーで実装できずにいます。
発生している問題・エラーメッセージ
シングルトンモデルの静的なクラス内で静的なvectorコンテナが作れない
該当のソースコード
hpp
1//データベースの情報用 2class SaveLoadDto { 3private: 4 int FILE_NUMBER; 5 int YEAR, MON, DAY; 6 std::string STORY_TITLE; 7 8public: 9 SaveLoadDto(); 10 SaveLoadDto(std::string Story_Title); 11}; 12class SaveLoad 13{ 14private: 15 static SaveLoad *STATIC_SAVELOAD; 16 static std::vector<SaveLoadDto> SAVELOADDATA; 17 18 SaveLoad(); 19 ~SaveLoad(); 20 void Initialize(); 21 22public: 23 static SaveLoad *GetInstance(); 24 static void Create(); 25 static void Destroy(); 26 static void UpDate(); 27 static void View(); 28};
cpp
1SaveLoad * SaveLoad::STATIC_SAVELOAD = NULL; 2static std::vector<SaveLoadDto*> SAVELOADDATA(31); 3 4SaveLoad::SaveLoad() 5{ 6 7} 8 9SaveLoad::~SaveLoad() 10{ 11} 12 13///変数を初期化します 14void SaveLoad::Initialize() 15{ 16 STATIC_SAVELOAD-> 17 STATIC_SAVELOAD->SAVELOADDATA //ここでどう VECTORを初期化すればいいのか 18} 19
試したこと
一度他の物を生成して代入する
///変数を初期化します void SaveLoad::Initialize() { std::vector<SaveLoadDto> INI STATIC_SAVELOAD->SAVELOADDATA.swap(INI) //LNK2001 リンカーエラー }
コピーコンストラクタを生成する:本体をすでに持っているといわれる
グローバルで宣言して、その変数をポインターで保持する: LNK2001 リンカーエラー
これに関しては「static std::vectorSaveLoad::SaveLoadDto *SAVELOADDATA_P;」という記述がいけないか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。