奇妙なトピックについて申し訳ありませんが、正確に私の質問を合成する方法を知らなかった。ここに問題があります:どのようにこの問題(Interface + template + reuse code)を扱うのですか
私はタイプのstd :: vectorを含むクラスのセットを持っています。
template <typename T>
class Container
{
T createObject() { T* obj=new T; _objects.push_back(obj); }
std::vector<T> _objects;
}
このテンプレートを異種地図に保存する必要があるときに問題が発生します。これらはテンプレートなので、初期化するまで存在しません。私はContainerをダミーのIContainerから派生させて良いスタートポイントを得ることを考えましたが、createObjectがテンプレート化される必要があるので、IContainerをhetrogenousマップに追加することができますが、createObject() static_castのように感じることはありません。誰かがこれに対する解決策を提案できますか?
ありがとうございます。 アマラル。
そのコードは意味をなさない。 'createObject'は' T'を返しますが、return文はなく、 '_objects'は' T'を保存しますが、 'T *'を追加しようとします。 – GManNickG
含まれる 'T'型は継承によって関連していますか?共通の基盤への継承?あなたは価値あるものを返す必要がありますか、あるいはポインタで返すことができますか?あなたが解決したい本当の問題を述べるなら、あなたがやりたいことより簡単な解決策があるかもしれません。解決策ではなく、問題について覚えておいてください。 –
私はあなたのオブジェクトがいくつかの 'std :: vector'を含んでいると思うので、必ずしも" templatizing "の良い候補ではありません。実際、*必要なときにテンプレートを使用したいと思います。 –