抱歉,我无法粘贴完整的代码,但我会尽力解释问题。我有一个结构向量。我将向量传递给一个函数,该函数用结构填充向量并返回向量。但是,当我尝试访问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()
 }

09-10 05:22
查看更多