返回堆栈中的值 - C++

1 c++ stack dereference

我有以下定义:

Stack<ASTNode*>* data;
Run Code Online (Sandbox Code Playgroud)

方式的类被定义,如果我data->push()data->pop(),我直接推到堆栈或弹出堆栈.要将节点放在堆栈顶部,我会这样做data->peek().出于测试目的,我想打印出堆栈中的顶级节点,如下所示:

cout << "top of stack is... " << ? << endl;
Run Code Online (Sandbox Code Playgroud)

我不确定语法是什么或如何取消引用它.

先谢谢,Hristo

Car*_*rum 7

这取决于您需要多少信息.如果你需要的只是堆栈顶部对象的地址(可能足以进行调试,取决于你猜的是什么),答案很简单:

cout << "top of stack is..." << data->peek() << endl;
Run Code Online (Sandbox Code Playgroud)

如果您需要对象本身,只需使用:

cout << "top of stack is..." << *(data->peek()) << endl;
Run Code Online (Sandbox Code Playgroud)

要么

cout << "top of stack is..." << data->peek()->someIdentifyingMethod() << endl;
Run Code Online (Sandbox Code Playgroud)


sth*_*sth 7

您正在寻找的语法应该是这样的:

cout << "top of stack is... " << *(data->peek()) << endl;
Run Code Online (Sandbox Code Playgroud)

为了这个工作,需要有一个operator<<定义ASTNode.如果不是这种情况,您可以定义自己的样子:

std::ostream& operator<<(std::ostream &strm, const ASTNode &node) {
  return strm << node.name << ": " << node.value;
}
Run Code Online (Sandbox Code Playgroud)