我有一个带结构的列表:
struct structPlacedBets
{
int betOption = 0;
int betValue = 0;
int betChips = 0;
int player = 1;
}
清单:
list <structPlacedBets> placedBets;
写入列表时,没有问题。我用数据填充临时变量,然后将临时变量切换到列表。
placedBets.push_back (tempPlacedBets);
一切都很好。
我也可以访问main函数中的列表,一切都很好。
但是,我想将内存地址从列表切换到一个函数,然后从列表中输出所有内容。在我尝试访问数据的那一刻,我的程序崩溃了。
以下是代码:
struct structPlacedBets
{
int betOption = 0;
int betValue = 0;
int betChips = 0;
int player = 1;
}
list <structPlacedBets> placedBets;
structPlacedBets tempPlacedBets; //temporary variable for filling the list
.
.
.
placedBets.push_back (tempPlacedBets);
.
.
.
void outputList(list <structPlacedBets> &tempList)
{
list <structPlacedBets>::iterator Iterator;
for (Iterator == tempList.begin(); Iterator != tempList.end(); Iterator++)
{
cout << Iterator->betOption; //here the program crashes
}
}
int main()
outputList(placedBets);
return 0;
当直接在主要访问列表时,没有其他功能,一切都很好。
效果很好:
int main()
list <structPlacedBets>::iterator Iterator;
for (Iterator = placedBets.begin(); Iterator != placedBets.end(); Iterator++)
{
cout << (*Iterator).betOption << endl;
cout << (*Iterator).betValue << endl;
cout << (*Iterator).betChips << endl;
cout << (*Iterator).player << endl;
}
希望,任何人都知道问题和答案。 谢谢。
答案 0 :(得分:0)
在第一个例子中,你有一个拼写错误:
for (Iterator == tempList.begin(); Iterator != tempList.end(); Iterator++)
// ^^
Iterator
从未被初始化为任何东西!比较它,然后取消引用它(如果你到目前为止,再增加并再次比较它)都有未定义的行为。
在第二个例子中,您正确地写了=
。
密切关注您的代码,并打开编译器的警告。