我正在尝试重载'<<<运算符但仍然收到此错误消息:
在函数'std :: ostream&运算符<<(std :: ostream&,const:Linkedlist&)': Linkedlist.cpp:148:34:错误:'operator<<'不匹配在'std :: operator<< [with _CharT = char,_Traits = std :: char_traits,_Alloc = std :: allocator](((std :: basic_ostream&)((std :: ostream *)outs)),((const std :: basic_string&) ((const std :: basic_string *)(& Node :: node :: fetchData()()))))<< “”' Linkedlist.cpp:142:15:注意:候选人是:std :: ostream&运算符<<(std :: ostream&,const Linkedlist&)
重载的操作符函数在Linkedlist实现文件中声明为友元成员函数,因为它将访问私有成员变量(head_ptr):
std::ostream& operator <<(std::ostream& outs, const Linkedlist& source)
{
node* cursor;
for(cursor = source.get_head(); cursor != NULL; cursor = cursor->fetchLink())
{
outs << cursor->fetchData() << " ";
}
return(outs);
}
这是Linkedlist头文件中的函数原型:
friend std::ostream& operator <<(std::ostream& outs, const Linkedlist& source);
我已经抓取了网络,到目前为止还无法找到解决方案。任何建议都会很棒!
答案 0 :(得分:0)
你的光标 - &gt; fetchData()是否返回了std :: string?如果是这样,您必须#include <string>
。
或者,尝试
outs << cursor->fetchData().c_str() << " ";