1
別のクラスで使用したいテンプレートクラスがあります。問題は、実際のタイプを知らなくてもテンプレートクラスを使いたいということです。C++の別のクラスのテンプレートクラスを使用
簡単な例:
template <class T>
class Foo{
private:
T x_;
public:
void Foo(T);
};
さて、Foo
を使用して、別のクラス。私は何をしたいのです:
class Bar{
private:
Foo foo_;
public:
Bar(Foo);
};
問題がBar
内部で使用する場合Foo
は、テンプレート引数を必要とすることです。 Bar
クラスが任意のテンプレート引数を使用してFoo
を処理するといいでしょう。回避策はありますか?
template <typename T>
class Bar{
private:
Foo<T> foo_;
public:
Bar(Foo<T>);
};
はまた、あなたが共通多型インターフェイスの下Foo
を型に消去することができます:
ありがとうございました。あなたの最初のソリューションは素敵でシンプルです!私はちょうど不思議に思っていました:クラスAがBによって使用されているクラスの階層構造をCなどで使用している場合、常にテンプレート引数を渡すのはやや面倒です。 – beginneR
@beginneR:例を示すことはできますか?それはあまり面倒ではないかなり一般的なことです –
私の 'Base'クラスは入力として' Foo'クラスのベクトルを取りますが、問題はベクトルの 'Foo'がすべて別の型を持っていて、 'Foo'のすべての型に対して1つの' Base'クラスが必要です。 – beginneR