0

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

所以。这是使用基类的示例

class A {}
template <class T>
class B : public A {}

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

4

1 回答 1

3

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

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

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

于 2012-07-08T22:25:37.597 回答