我定义了以下内容:
Stack<ASTNode*>* data;
类的定义方式,如果我做data->push()
or data->pop()
,我直接压入堆栈或弹出堆栈。要获得堆栈顶部的节点,我会这样做data->peek()
。出于测试目的,我想打印出堆栈中的顶部节点,如下所示:
cout << "top of stack is... " << ? << endl;
我不确定语法是什么或如何取消引用它。
在此先感谢, Hristo
我定义了以下内容:
Stack<ASTNode*>* data;
类的定义方式,如果我做data->push()
or data->pop()
,我直接压入堆栈或弹出堆栈。要获得堆栈顶部的节点,我会这样做data->peek()
。出于测试目的,我想打印出堆栈中的顶部节点,如下所示:
cout << "top of stack is... " << ? << endl;
我不确定语法是什么或如何取消引用它。
在此先感谢, Hristo
这取决于您需要多少信息。如果您只需要堆栈顶部的对象的地址(可能足以进行调试,取决于您在做什么我猜)答案很简单:
cout << "top of stack is..." << data->peek() << endl;
如果您需要对象本身,只需使用:
cout << "top of stack is..." << *(data->peek()) << endl;
或者
cout << "top of stack is..." << data->peek()->someIdentifyingMethod() << endl;
您正在寻找的语法应该是这样的:
cout << "top of stack is... " << *(data->peek()) << endl;
为此,需要operator<<
定义 for ASTNode
。如果不是这种情况,您可以定义自己的,如下所示:
std::ostream& operator<<(std::ostream &strm, const ASTNode &node) {
return strm << node.name << ": " << node.value;
}
假设您的 ASTNode 类重载了 operator<<,看起来您需要:
cout << "top of stack: " << *(data->peek()) << endl;