我有一个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方法,除了我需要为t_str
,t_int
和t_double
创建DataColumns,适当地键入列,然后放置值在他们中。
此时我可以根据需要编辑任何内容,但我需要设置模式,以便实现记录的任何内容都可以将其数据成员序列化为带有类型列的托管数据集。
任何人都可以建议一个有用的模式或建议吗?如果这是Python,我可以在元组上进行检查,但在c ++ 11中,元组需要是预定义类型。
这里的问题是我可能无法使用/ cli编译记录或TestRecord,在这种情况下我可以将数据表传递给记录并让它自己填充它 - 所以我正在寻找比那些更好的解决方案我有:
a)为每个派生类编写一个托管包装器 b)进行型式检验。
我错过了一种模式吗?
谢谢, 梅拉妮