重载的ostream运算符的代码
template<class T>
ostream& operator<< (ostream& streamer,Stack<T>& stack)
{
if(stack.isEmpty())
{
streamer << "[]";
}
else
{
Stack<T> tStack = stack;
streamer << "[";
while(tStack.top!=NULL)
{
streamer << tStack.top->element;
tStack.top = tStack.top -> next;
if(tStack.top)
streamer << ",";
}
streamer << "]";
}
return streamer;
}
错误很长,这里是链接。
http://pastebin.com/qt4WTEiV
我也测试了这样的功能。
Stack<int> *s1 = new Stack<int>();
cout << "Pushing...." << endl;
s1->push(1);
s1->push(2);
s1->push(3);
s1->push(4);
s1->push(5);
cout<< *s1 << endl;
朋友功能...
friend ostream& operator<< <T>(ostream&,Stack<T>&);
已解决:从来没有在我的代码中的某处〜Stack()
最佳答案
您发布的错误
Stack.C:37:10:错误:“ operator *”不匹配(操作数类型为
‘std :: ostream {aka std :: basic_ostream}’)返回* streamer;
告诉您正在取消引用ostream
,这是不正确的。更改此设置以返回对ostream
的引用:
return streamer;
并确保
ostream& operator<< (ostream& streamer,Stack<T>& stack)
中使用的其他输出操作如streamer << tStack.top->element;
tStack.top = tStack.top -> next;
定义明确。
最后,声明
friend ostream& operator<< <T>(ostream&,Stack<T>&);
应更改为:
template<class T>
friend ostream& operator<< (ostream&,Stack<T>&);
关于c++ - Ostream运算符被勒索不接受我的堆栈指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21562150/