0

这是我遇到问题的一段代码:

if (stack_flag == true) {
    bool hangar = false;
    while (hangar == false) {
        unsigned int index = s_move.top();
        unsigned int edge = map[index].get_which_edge();
        char current = map[index].get_char();
        s_move.pop();

如果我的程序接受命令行输入,则使用堆栈容器;这就是堆栈标志。这是我循环的前几行。堆栈用一个值初始化。我遇到的问题是我需要获取堆栈顶部元素的值,并且我还需要立即将该元素从堆栈中弹出,但是 top() 函数返回对顶部值的引用。当我从参考中弹出值时,参考不再有用。是否有另一种方法可以从堆栈中获取值,同时立即将其弹出?我的错误是:s_move was not declared in this scope.

4

1 回答 1

1

这将正常工作:

unsigned int index = s_move.top();

因为index是左值。使用 top() 返回的引用进行复制。
一旦你有一个副本弹出顶部将不会影响索引。

另一个问题:

我的错误是: s_move 未在此范围内声明。

是因为代码不知道对象s_move
也许您忘记包含适当的头文件。

于 2013-09-25T23:57:24.513 回答