use*_*756 6 c++ templates member
我有两节课.
第一个类(A)用模板构建.
template <class T>
class A
{
public:
T value;
};
Run Code Online (Sandbox Code Playgroud)
第二类(B)应该有一个A类的对象作为成员变量.像这样:
class B
{
public:
A<int> value;
};
Run Code Online (Sandbox Code Playgroud)
但现在我想在A类中使用任何类型的模板类.不仅仅是int.显然我不能声明包含任何类的类的(member-)变量.所以,我需要这样的东西:
class B
{
public:
A<*> value;
};
Run Code Online (Sandbox Code Playgroud)
这个问题有(干净的)解决方案吗?
- 来自德国的问候,巴斯蒂安
您不能拥有B带有"任何"成员对象的单个类,因为B它必须是一个定义良好的类,并且A<T>对于不同类型是不同的类型T.您可以B自己制作模板:
template <typename T>
class B
{
A<T> value;
};
Run Code Online (Sandbox Code Playgroud)
或者你可以看看boost::any,这是任意类型的类型擦除容器(但使用它需要一定量的额外工作).该any班仅适用于价值类型,不过,这并不完全是任意的.