• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:templateのmap処理でエラー)

templateのmap処理でエラー

このQ&Aのポイント
  • C++のTemplateを勉強中です。Parentクラス内でChildクラスを管理している際に、map処理でエラーが発生しています。具体的には、Parentクラス内でChildクラスのポインタとIDを保持するためにSTLのmapを使用していますが、m_Mapをstaticにするとエラーが発生します。エラーの詳細についても説明しています。
  • エラーの内容は、「undefined reference to `Parent<Child>::m_Map'」です。このエラーは、m_Mapをstaticにすると発生するものであり、Singletonとして動作させるためには一元管理するmapをstaticにしたいと述べています。
  • 対処方法としては、m_Mapをstaticにする理由やエラーを解消する方法についての質問をしています。具体的なコードやエラーメッセージを示していますので、詳しい方にお答えいただけることを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

テンプレートクラスでなく普通のクラスであっても、static メンバ変数はクラス定義の外側で実体を定義する必要があることはお分かりでしょうか? 同様に、このテンプレートクラスの場合も、クラス定義の外側でstaticメンバ変数の実体を定義する必要があります。 template <typename T> map<int, T*> Parent<T>::m_Map;

obake1118
質問者

お礼

定義が必要なのは理解していたのですが、教えて頂いた分の右半分しかなく、 いじくりまわしてはエラーの連続でした。 いただいた分を追加することで通るようになりました。 ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その m_Map って, どこで実体を定義してるの?

obake1118
質問者

お礼

実体の定義についてヒントを頂きありがとうございました。

obake1118
質問者

補足

お読みいただきありがとうございます。 ちなみに実体をどのように定義したらよいかでも悩んでおります。 最初は static map<int, T*> m_Map; の下あたりに Parent<Child>::m_Map; とかを入れればいけるかな?と思っていたのですが うまくいきませんでした・・・

関連するQ&A