实现重载运算符'<<'时出错 - C ++

时间:2012-08-26 11:51:05

标签: c++ overloading operator-keyword

我正在尝试重载'<<<运算符但仍然收到此错误消息:

  

在函数'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);

我已经抓取了网络,到目前为止还无法找到解决方案。任何建议都会很棒!

1 个答案:

答案 0 :(得分:0)

你的光标 - &gt; fetchData()是否返回了std :: string?如果是这样,您必须#include <string>。 或者,尝试

outs << cursor->fetchData().c_str() << " ";