【发布时间】:2020-08-17 05:12:30
【问题描述】:
我有以下基本结构:
template<typename T>
class A {
T data;
};
class B {
A data; // no template parameters
};
class B 中的数据可以有任何模板参数,但我不想模板B,这是解决A data 的声明没有参数这一事实的一种方法。
有没有办法做到这一点,或者必须将B 模板化?
【问题讨论】:
-
如果您要求我认为您要求的内容,很可能您希望
B包含任何类型。或者B是多态的。有几种方法可以做到这一点。第一次使用std::any,第二次使用std::variant。或者使用B(带有模板参数)但继承自非模板基类(也称为多态继承),这可能是首选,但需要您了解如何进行类多态。
标签: c++ class templates member class-template