Ich habe eine Vorlagenklasse, die ich in einer anderen Klasse verwenden möchte. Das Problem ist, dass ich die Vorlagenklasse verwenden möchte, ohne den tatsächlichen Typ zu kennen.Verwenden Sie Vorlagenklasse in einer anderen Klasse in C++
Ein einfaches Beispiel:
template <class T>
class Foo{
private:
T x_;
public:
void Foo(T);
};
nun eine weitere Klasse mit Foo
. Was würde Ich mag zu tun ist:
class Bar{
private:
Foo foo_;
public:
Bar(Foo);
};
Das Problem ist, dass Foo
eine Vorlage Argument erfordert, wenn sie innerhalb Bar
verwendet. Es wäre schön, wenn die Klasse Bar
Foo
mit einem beliebigen Template-Argument behandeln würde. Gibt es eine Problemumgehung?
Danke, Ihre erste Lösung ist schön und einfach! Ich habe mich nur gefragt: Wenn Sie eine hierarchische Struktur von Klassen haben, in denen Klasse A von B verwendet wird, wird von C usw. verwendet, dann ist es etwas ärgerlich, das Template-Argument immer weiterzugeben. – beginneR
@beginneR: Können Sie ein Beispiel zeigen? Es ist eine ziemlich gewöhnliche Sache, die nicht zu nervig sein sollte. –
Angenommen, meine 'Base' Klasse nimmt als Eingabe einen Vektor von' Foo' Klassen, aber das Problem ist, dass jedes 'Foo' im Vektor einen anderen Typ hat und ich nicht Ich möchte für jede Art von "Foo" eine "Base" -Klasse haben. – beginneR