C++:我可以编写一个从 T 派生的模板类吗?

标签 c++ templates inheritance radix derived

我不太确定如何用英语表达这个,但我想做这样的事情:

template <class T>
class derived: public T
{ blah };

基本上,我有一个模板类,但我从模板中指定的类派生了一个新类? IE。所以我不一定会在编译时知道这个类。

这可能吗?
如果是这样,它的语义是什么?

例如,假设我正在尝试编写一个“父”类。为了这个例子的目的,假设它是一个树父。树的父类,本身就是一棵树(因此它继承自树),但也有一个指向子树的引用 vector 。
但是,父类本身不一定是树;它可以是任何类,这样我就可以写这样的东西:

Parent<tree> treeParent;
Parent<shrub> shrubParent;

最佳答案

是的。这是可能的。尝试这样做。

I wouldn't necessarily know the class at compile time.

我认为,您的意思是“在定义类模板时我不一定知道类。”

当你编译时,你已经定义了类模板,并在你的代码中使用它,将模板参数传递给它,这意味着你在编译时知道类(即模板参数)。如果您不知道要用作 base 的类,那么您甚至无法编译代码。

关于C++:我可以编写一个从 T 派生的模板类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8945948/

相关文章:

c++ - OpenCV:来自 decomposeHomographyMat 的奇怪旋转和平移矩阵

c++ - 我可以让 C++ 在没有内联汇编的情况下生成 cmpps 指令吗?

c++ - 模板函数错误

php - PHP中静态类的不同实例

python - TypeError : object. __init__() 没有参数

c++ - 动态转换为派生类 : a strange case

c++ - 使用 openmp + SIMD 没有加速

c++ - 对 Class::Class() 和 Class::function() 的 undefined reference

c++ - Eigen 3 并根据模板参数重载新运算符以确保正确对齐

c++ -> 模板元编程与模板函数