抱歉,我无法粘贴完整的代码,但我会尽力解释问题。我有一个结构向量。我将向量传递给一个函数,该函数用结构填充向量并返回向量。但是,当我尝试访问vector元素时,只会插入最后一个元素。我认为问题出在哪里,我正在存储结构的地址,因此向量仅保留最后一个值,但我不确定如何更正此问题。
这是我的结构:
struct NA
{ element1;
element2;
};
这是我在声明向量后如何传递它的方法:
Vector<NA> del;
func(del);
这是我的功能:(q是具有存储过程结果的变量
func(Vector<NA> &dels)
{
NA& del(*new NA);
while(q.nextquery())
{
while(q.nextrow())
{
q.bind(del.element1);
q.bind(del.element2);
dels.insert(&del);
}
return dels.entries()
}
最佳答案
NA& del(*new NA);
while(q.nextquery())
dels.insert(&del);
显然,您只创建了一个
del
对象,但是将其多次插入同一向量中。最后,所有vector的条目将指向同一对象。您可能想要为向量中的每个条目创建一个新的
del
对象。因此,请将创建语句放入循环中。func(Vector<NA> &dels)
{
while(q.nextquery())
{
while(q.nextrow())
{
NA& del(*new NA); // <-- Here
q.bind(del.element1);
q.bind(del.element2);
dels.insert(&del);
}
return dels.entries()
}