是否有一个基类,C++标准库的所有成员都可以从中派生出来?

Bra*_*van 2 c++ oop polymorphism base-class c++11

C++/CLI有一个System :: Object类来实现这个目的,但我似乎无法在标准库中找到它.基本上我正在编写一组类,我希望基类std::stringcontent属性中存储向量,但派生类可能需要存储其他东西的向量(甚至可能是我自己的类之一).这似乎是一个奇怪的目标,但我正在写一些文件访问类,让我更容易操作不同格式的文件.基File类将每个行存储在一个字符串中,作为向量的一部分 - 但是,例如,JSON的类可能需要存储JS样式的集合/对象等.

我能想到的唯一方法就是让content属性成为对象的向量(或者其他一些通用的基类 - 我也可以从多态性中派生出任何自定义类),然后将其转换回任何类型的必要类型关于正在使用的子对象的类型.我很快就发现在任何std::object地方都找不到(或类似的).

这个例子应该展示我正在尝试做的事情:

class File {
protected:
    std::vector<std::object> _content;

public:
    //Contructors/methods/etc.

    std::string getItemAt(size_t index) {
        return static_cast<std::string>(this->_content[index]);
    }

    void setItemAt(size_t index, std::string value) {
        this->_content[index] = static_cast<std::object>(value);
    }
};

class JSONFile: File {
public:
    //Constructors/methods/etc.

    SomeObject getItemAt(size_t index) {
        return static_cast<SomeObject>(this->_content[index]);
    }

    void setItemAt(size_t index, SomeObject value) {
        this->_content[index] = static_cast<std::object>(value);
    }
};
Run Code Online (Sandbox Code Playgroud)

请注意,此示例假定std::object存在,并且这SomeObject将是用于处理JSON(例如,再次,例如,这可能是任何东西)数据的任何内容.SomeObject显然会来源于std::object.

任何建议将不胜感激,或者如果我对此完全采取错误的方式,任何关于如何做到这一点的反馈,以便不需要的std::object东西将非常感激:)

eml*_*lai 8

没有.

因为C++就是"你只需为你使用的东西买单".

界面std::object会是什么样的?如果存在任何成员函数,则必须virtual使用这些函数,因为动态调度会导致运行时成本.

如果假设std::object是一个空类,你可以用std::object引用做什么?不多,因为它没有任何成员函数可以调用.为什么在没有任何共同点的时候,所有东西都来自一个单一的基础.


如果你真的需要所有课程的基础,你总是可以写一个.但要注意,这样做可能不会一个很好的 设计决策.