以下是我遇到问题的代码:
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.
答案 0 :(得分:1)
这样可以正常工作:
unsigned int index = s_move.top();
因为index
是l值。使用top()返回的引用制作副本
一旦你有一个副本弹出顶部将不会影响索引。
另一个问题:
我的错误是:s_move未在此范围内声明。
是因为代码不知道对象s_move
也许你忘了包含适当的头文件。