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

标签 c++ templates member

我有两个类(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/

相关文章:

c++ - 在 Unity Builds 中创建文件范围的替代方法

c++ - 在 C++ 代码中将 size_t 变量与 -1(最大大小值)进行比较

c++ - 无法尝试删除不在 C++ 链接列表中的项目

python - Django {% blocktrans %} : How to handle pluralization inside a for loop?

c++ - 获取指向对象成员函数的指针

c++ - 如何从成员函数中获取 "simple"函数指针

c++ - 错误 : pointer to incomplete class type is not allowed

javascript - 需要帮助修改网站的 javascript

c++ - 使用模板或宏对多种类型进行静态分派(dispatch)

C++ 使用来自 const 函数的映射调用指向成员的指针