Bra*_*van 2 c++ oop polymorphism base-class c++11
C++/CLI有一个System :: Object类来实现这个目的,但我似乎无法在标准库中找到它.基本上我正在编写一组类,我希望基类std::string
在content
属性中存储向量,但派生类可能需要存储其他东西的向量(甚至可能是我自己的类之一).这似乎是一个奇怪的目标,但我正在写一些文件访问类,让我更容易操作不同格式的文件.基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
东西将非常感激:)