我有两个类(class)。
第一个类 (A) 使用模板构建。
template <class T>
class A
{
public:
T value;
};
第二个类(B)应该有一个类A的对象作为成员变量。像这样:
class B
{
public:
A<int> value;
};
但现在我想在类 A 中使用任何类型的模板类。不仅是int。 显然我不能声明一个包含任何类的(成员)变量。 所以,我需要这样的东西:
class B
{
public:
A<*> value;
};
这个问题有什么(干净的)解决方案吗?
-- 来自德国的问候,巴斯蒂安
最佳答案
你不能有一个类 B
使用“任何”成员对象,因为 B
必须是定义明确的类,并且 A<T>
是不同类型的不同类型 T
.您可以制作 B
模板本身:
template <typename T>
class B
{
A<T> value;
};
或者你可以看看 boost::any
,它是任意类型的类型删除容器(但使用它需要一定量的额外工作)。 any
class 仅适用于 value 类型,但它并不是完全任意的。
关于c++ - 在成员变量中保存任何类型的 C++ 模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7154602/