在成员变量中保存任何类型的C++模板类

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)

这个问题有(干净的)解决方案吗?

- 来自德国的问候,巴斯蒂安

Ker*_* SB 7

您不能拥有B带有"任何"成员对象的单个类,因为B它必须是一个定义良好的类,并且A<T>对于不同类型是不同的类型T.您可以B自己制作模板:

template <typename T>
class B
{
  A<T> value;
};
Run Code Online (Sandbox Code Playgroud)

或者你可以看看boost::any,这是任意类型的类型擦除容器(但使用它需要一定量的额外工作).该any班仅适用于价值类型,不过,这并不完全是任意的.


Nim*_*Nim 1

是的,已经完成了。提升::任何