繁体   English   中英

创建指向模板化类的指针

[英]Creating a pointer to a templated class

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

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

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 B<char> *成员。 再一次,您不需要A基类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM