Cha*_*dNC 9 c++ arrays templates
我已经有很长一段时间没有做过任何C++编程了,我决定在业余时间把它搞砸一下,所以我决定给我写一个小数据库程序只是为了好玩,我在创建时遇到了麻烦一组模板化的类对象.
我所拥有的是这个类,我想用它来表示数据库记录中的字段.
template <class T, int fieldTypeId>
class Field
{
private:
T field;
int field_type;
public:
// ...
};
Run Code Online (Sandbox Code Playgroud)
我想使用该类的数组来表示使用此类的数据库中的记录.
class Database_Record
{
private:
int id;
Field record[];
public:
Database_Record(int);
Database_Record(int, Field[]);
~Database_Record();
};
Run Code Online (Sandbox Code Playgroud)
我坚持的地方是在类中创建数组,Database_Record因为这是一个模板化类对象的数组,每个元素可能是不同的类型,我不知道我是否需要声明数组因此.我正在努力做甚至可能,还是我错误的方式?任何帮助将不胜感激.
Nee*_*asu 15
Field<T1>并且Field<T2>是两种完全不同的类型.要在矢量中处理它们,您需要在某处进行序列化.你可以写AbstractField和
struct AbstractField{
virtual ~AbstractField() = 0;
};
template<class T,int fieldTypeId>
class Field: public AbstractField{
private:
T field;
public:
const static int field_type;
public:
virtual ~Field(){}
};
class Database_Record{
std::vector<AbstractField*> record;
public:
~Database_Record(){
//delete all AbstractFields in vector
}
};
Run Code Online (Sandbox Code Playgroud)
然后保持vector的AbstractField.也用vector而不是[].使用AbstractField*而不是AbstractField写入至少一个纯虚拟AbstractField.
你可以制作AbstractField纯虚拟的析构函数.并且不要忘记删除所有AbstractFields.在~Database_Record()