创建指向模板化类的指针

时间:2012-07-08 22:20:21

标签: c++ templates c++11

我知道如果我使用基类,我可以有效地创建一个指向模板化类的指针。有更简单的方法吗?

因此。以下是使用基类

的示例
class A {}
template <class T>
class B : public A {}

现在,我可以创建B<T>的实例并使用基类A指向它。有没有更简单的方法?更直接的方式?一个不涉及创建“虚拟”基类的。

1 个答案:

答案 0 :(得分:3)

模板的不同实例 - 例如B<int>B<char> - 是完全不同的类型,就像intchar是不同的类型一样。您不能有一个指向 类型的对象的指针,除非您从同一个基类派生它们,如您的示例所示。就像你不能有一个指针变量可以指向intchar

但是如果你只希望你的指针指向一个特定的类型,你可以只声明一个类型为B<int> *B<char> *的指针。您不需要基类A

当然,可以将单个特定类型指定为其他模板的参数。例如,您可以拥有一个模板类C<T>,其中包含B<T> *类型的指针,因此C<int>将包含B<int> *成员和C<char>将有一个B<char> *成员。再一次,您不需要A基类。

相关问题