尝试访问列表时出错

时间:2017-04-03 18:12:07

标签: c++

我有一个带结构的列表:

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;
    }

希望,任何人都知道问题和答案。 谢谢。

1 个答案:

答案 0 :(得分:0)

在第一个例子中,你有一个拼写错误:

for (Iterator == tempList.begin(); Iterator != tempList.end(); Iterator++)
//            ^^

Iterator从未被初始化为任何东西!比较它,然后取消引用它(如果你到目前为止,再增加并再次比较它)都有未定义的行为

在第二个例子中,您正确地写了=

密切关注您的代码,并打开编译器的警告。