我不太确定如何用英语表达这个,但我想做这样的事情:
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/