我正在编写一些与数据库交互的代码。我的解决方案是使用各种结构的向量来表示数据库中的每个表。我想在我的Database类中创建一个模板来push_back向量并插入一个新的(空白)行;但是,我无法弄清楚要放在“push_back(...)”中的内容。以下类型有意义,但不起作用。正在返回密钥,以便稍后我可以与类内的向量进行交互。
template <class T> void Database::newRecord(T& Type, int& key)
{
Type.push_back(Type.value_type());
key = Type.size()-1;
Type[key].PK = key;
}
我将使用以下内容调用例程:
vector<table_row> table;
int key;
newRecord(table, key);
table[key]...
结构看起来像这样:
struct table_row {
int PK;
....
};
谢谢!
答案 0 :(得分:0)
对我而言,整个想法都是可疑的。但如果这是你想要的,你可以在没有push_back的情况下完成,只需按vec.resize(vex.size()+1)
而不是根据需要修补vec.back()
。
我建议忘记“空”记录,但添加实际的预期内容。
答案 1 :(得分:0)
试试这个
template <class T> void Database::newRecord(T& Type, int& key)
{
typedef Type::value_type type;
Type.push_back( type() );
key = Type.size()-1;
Type[key].PK = key;
}