私はプライベートメンバとしてテンプレートクラスへのポインタを持つクラスを定義しています。私はそのようなクラスのデザインに関する質問をしています。より正確には、外部クラスがテンプレート化されるべきかどうか。 外部クラスのコンストラクタでプライベートメンバーを初期化しているので、そうするのが正しいと思います。他の選択肢はありますか? クラス宣言の例を以下に示す、すべての提案は歓迎されている:ネストされたテンプレートクラスを設計する
#include <foo.h>
#include <bar.h>
template < class FOO_TYPE, class BAR_TYPE >
class OuterClass{
public:
OuterClass(){
this->m_pFoo = new CFoo<FOO_TYPE>();
this->m_pBar = new CBar<BAR_TYPE>();
this->m_nMyInt = 0;
}
template < class FOO_TYPE >
CFoo<FOO_TYPE> * processFoo();
template < class BAR_TYPE >
CBar<BAR_TYPE> * processBar();
~OuterClass(){
delete this->m_pFoo;
delete this->m_pBar;
}
private:
int m_nMyInt;
CFoo<FOO_TYPE> * m_pFoo;
CBar<BAR_TYPE> * m_pBar;
};
+1 "ルール3"では、私はそれを逃したとは思えません。 'processFoo'と' processBar'に関しては – Mephane
ですが、そうです。外側のクラスがテンプレート化されていない場合にのみ表示されます。さらに、私はコード全体を入れていませんでしたが、あなたが正しいです、私はコピーコンストラクタと割り当てメソッドが必要です。 – Javier