2017-11-21 4 views
-1

クラスの型をTからnew_Tに変更したいのですが可能ですか?例えばテンプレート関数のパラメータを使ってテンプレートクラスの型を変更できますか?

template<class T,int count> 
class obj_pool{ 
    public: 
    template<class new_T> 
    void Retypedef(); 
}; 

はint型obj_pool<int> poolのために作成され、ユーザーはpool.Retypedef<double>()関数を呼び出すとき、そのプールは、二重のためにプールになりobj_pool。将来的には

+2

を変更したいんどのタイプ?質問はむしろ不明確です – user463035818

+0

'T'はちょうど名前です。代わりに、 'new_T'、' chicken'または 'StackOverflow'を使うことができ、同じ結果が得られます。 – ForceBru

答えて

0

、あなたが質問を書くとき、あなたが解決しようとしている根本的な問題に関するいくつかの情報が含まれています。それで、あなたの試行された解決策が致命的な終わりである場合、回答者は根本的な問題を解決することができます。

または、根本的な問題について新しい質問をしてください(質問ボタンをクリックしてください)。

0

例では、Tnew_Tは2つの異なるパラメータです。このテンプレートを使用すると、次のようになります。あなたはnew_TTいつものように同じようにしたい場合は

obj_pool<int,3> x; 
x.Retypedef<double>(); // <- passing different types for new_T 
x.Retypedef<float>(); // <- does not change the type of x 

x.Retypedef<int>();  // ..and of course you can use the same type for 
         // new_T as for T 

を、あなたは、単に書くことができます:

template<class T,int count> 
class obj_pool{ 
    public: 
    void Retypedef(); // can use T 
}; 
関連する問題