【发布时间】:2016-04-13 07:42:41
【问题描述】:
我对 C++ 中的列表操作有疑问,请多多包涵,我是这门语言的初学者。
所以,我有一个这样创建的列表:
list<Auction> MyAucList;
我构造了一些对象并将它们放在列表中:
Auction test(a, i); // a and i are int
MyAucList.push_back(test); // I put my objects in the list
现在,在同一个函数中,我可以迭代列表并从对象中获取数据:
for (list<Auction>::const_iterator it1 = MyAucList.begin(); it1 != MyAucList.end(); ++it1)
{
if ((*it1).Getitem() == 118632)
cout << "FOUND !" << endl;
}
这按预期工作!
但是,当我将对列表的引用传递给另一个函数时:
listHandling(MyAucList);
}
void listHandling(list<Auction> &MyAucList)
{
for (list<Auction>::const_iterator it1 = MyAucList.begin(); it1 != MyAucList.end(); ++it1)
{
if ((*it1).Getitem() == 118632)
cout << "FOUND : " << 118632 << endl;
}
}
我得到一个段错误:-( 我尝试不使用引用或使用指针,但结果相同。 你对这个问题有什么想法吗?
感谢您的帮助!
【问题讨论】:
-
好吧,首先,你的函数中没有
MyAucList;参数为MyList。MyAucList到底是从哪里来的?发一个real MCVE. -
@WhozCraig : 哦,对不起,我在编辑我的帖子时犯了一个错误,我编辑它!
-
太好了,现在请注意该评论的第二部分。我可怜的廉价玻璃仿水晶球告诉我
Auction正在打破Rule of Three,但没有MCVE 就不可能确定。我们不是介意读者。在调试器中运行它可能会准确地告诉你车轮从哪里掉下来。 -
展示问题的完全独立的程序应该是您的首要任务,并且通常应该在提出问题之前完成。通常,它会让事情变得如此明显,你不会需要问:-)
-
感谢您的建议,我会这样做的!