
前提・実現したいこと
C++ テンプレートクラスで多態性の実現
お世話になります。
趣味でゲームを作ろうとしているのですが、表題の件にて行き詰ったのでご教授願いたいです。
下記のように、ゲーム中にメッセージや、キャラ
の能力値等を表示するウィンドウクラスを作成したいと考えています。
ウィンドウごとに、持っている情報は、異なりますが、情報のSet・Getは全ウィンドウに共通するため、テンプレートとしました。
template<typename T>
class Window
{
int width;
int height;
T item;
void SetItem(const T& item);
const T& GetItem();
}
class MessageWindow : public Windowstd::string
{
}
class ValueWindow : public Window< int >
{
}
ウィンドウは下記のように、マネジメントするクラスを作って、一括で管理しようと考えています。
class WindowManager
{
std::vector< std::shared_ptr<Window> > windows;
}
しかし、宣言の時点で型を指定しなければコンパイルエラーになってしまい、多態性を実現できない。
何か良い方法はないでしょうか。
発生している問題・エラーメッセージ
上記のように、テンプレートを使ったクラスで多態性を実現しようとすると
宣言の時点で、型を指定しないとコンパイルエラーになる。
該当のソースコード
class WindowManager
{
↓↓型を指定していない為、コンパイルエラー
std::vector< std::shared_ptr<Window> > windows;
}
試したこと
template<typename T>
class Window
{
int width;
int height;
T item;
void SetItem(const T& item);
const T& GetItem();
}
T itemを void* itemにしようかと考えましたが
いい案といえるのでしょうか。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/01 15:53