我有一个 c++ 结构向量,我需要将它放入一个托管的类型化数据集中。
std::vector<Record*> record_collection;
class Record{
public:
Record(){};
virtual ~Record(){};
virtual void serialize(std::ostream& dest){
dest << "Record" << std::endl;
}
};
Record* 是一个基类 - 我需要处理派生类。一个典型的例子是
class TestRecord:public Record{
public:
TestRecord(){};
~TestRecord(){};
std::string t_str;
int t_int;
double t_double;
void serialize(std::ostream& dest){
dest << t_int << ',' << t_double << ',' << t_str << ',' << std::endl;
};
};
本质上,我需要重现 serialize 方法,除了我需要为 、 和 制作 DataColumns t_str
,t_int
适当t_double
地键入列,然后将值放入其中。
此时我可以根据需要编辑任何内容,但我需要设置模式,以便实现记录的任何内容都可以将其数据成员序列化为具有类型列的托管数据集。
任何人都可以就一种模式或建议提出建议,这会有所帮助吗?如果这是 Python,我可以通过检查元组来做到这一点,但在 c++11 中,元组需要是预定义的类型。
这里的问题是我可能无法使用 /cli 编译记录或 TestRecord,在这种情况下,我可以将数据表传递给记录并让它自己填充 - 所以我正在寻找比我拥有的更好的解决方案:
a) 为每个派生类编写一个托管包装器b) 进行类型检查。
有没有我错过的模式?
谢谢,梅兰妮