我有以下定义:
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
这取决于您需要多少信息.如果你需要的只是堆栈顶部对象的地址(可能足以进行调试,取决于你猜的是什么),答案很简单:
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)
您正在寻找的语法应该是这样的:
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)
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |