正在创建指向模板化类的指针
Creating a pointer to a templated class
我知道,如果我使用基类,我可以有效地创建指向模板化类的指针。有没有更简单的方法?
所以。下面是一个使用基类的例子
class A {}
template <class T>
class B : public A {}
现在,我可以创建一个B<T>
的实例,并使用基类A
指向它。有没有更简单的方法?更直接的方式?一种不涉及创建"伪"基类的方法。
模板的不同实例(例如B<int>
和B<char>
)是完全独立的类型,就像int
和char
是独立的类型一样。您不能有一个指针指向任一类型的对象,除非您从同一基类派生它们,如您的示例中所示。就像不能有一个可以指向int
或char
的指针变量一样。
但是,如果您只想让指针指向一个特定的类型,那么您可以声明一个类型为B<int> *
或B<char> *
或其他类型的指针。您不需要基类A
。
当然,这一特定类型可能被指定为其他模板的参数。例如,您可以有一个模板类C<T>
,它包含一个类型为B<T> *
的指针,因此C<int>
将有一个B<int> *
成员,而C<char>
将有一个子B<char> *
成员。同样,您不需要A
基类。
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何在没有数据拷贝的情况下从指针创建一个Eigen VectorXd对象
- 如何从绝对地址的 C 样式指针创建对C++对象的引用
- 不明白使用双指针 (**) 创建 2d 动态数组
- 如何使用指向动态数组的静态指针创建类?
- Opencl:从 c 样式指针创建 UserEvent
- 从 uint16 指针创建垫子
- 如何为指针创建类型定义
- 从原始指针创建const_iterator会在 macOS 上产生编译错误
- 为什么可以使用指针创建新结构,但不能以相同的方式创建双精度?
- 是否可以在 c++17 中为 c 样式指针或原始指针创建弱指针
- 调用虚拟函数而不通过类类型指针创建任何对象
- 如何使用双指针创建指针数组?
- 使用指针创建类成员
- 如何使用成员函数指针创建模板类
- 从现有指针C 创建一个新对象
- 使用指针创建动态数组的问题
- 如何为指向数组的指针创建内存集?
- 使用共享指针创建的链表数组
- 使用C++ 11 中的模板类型的成员函数指针创建方法参数