正在创建指向模板化类的指针

Creating a pointer to a templated class

本文关键字:指针 创建      更新时间:2023-10-16

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

所以。下面是一个使用基类的例子

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

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

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

但是,如果您只想让指针指向一个特定的类型,那么您可以声明一个类型为B<int> *B<char> *或其他类型的指针。您不需要基类A

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