c++ - C++ 类中的任意数据类型

标签 c++ polymorphism

我想创建一个类来将辅助数据存储在任意对象中 - 什么是一种干净的方法?

class A{
    std::string _name;
    int _val;
    void * _extraData;

    //I want to implement these methods
    void setExtraData(void * data){
        //
    }   

    void * getExtraData(){
    }   
};


class B{
    std::vector<A *> v;

    void foo(){
        //use A here - _extraData will      
        //be a (say) a vector<int>
    }
};

最佳答案

如果你有一组已知的类型,我会从 boost::variant 开始,如果没有,我会从 boost::any 开始。你总是可以评估你的设计,看看带有抽象接口(interface)的多态性是否也能解决你的问题(有时它没有帮助)。有关您尝试解决的实际问题的更多详细信息可能有助于得出更好的答案。

关于c++ - C++ 类中的任意数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617821/

相关文章:

不使用任何现成函数计算给定变量 x 的 ln 的 C++ 程序

c++ - 使用无锁指针队列在线程之间移动数据是否安全

使用动态参数的 C# 方法重载

c# - 从父类ctor调用重写的方法

database - 与另一个模型或父模型的多态关联

c++ - 是否可以传递对 consteval 函数的引用并将其用作附加返回值?

c++ - 将 3 个整数的结构 vector 解释为数组

c++ - 复制构造函数和 operator= 是必须的吗?

C++调用基类方法切片对象

SQL:数据库规范化,同时保留约束