0

現在、「<<」演算子をオーバーロードしようとしていますが、次のエラーメッセージが表示され続けます。

関数'std:: ostream&operator <<(std :: ostream&、const:Linkedlist&)':Linkedlist.cpp:148:34:エラー:'std :: operator<<'の'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&operator <<(std: :ostream&、const Linkedlist&)

オーバーロードされた演算子関数は、プライベートメンバー変数(head_ptr)にアクセスするため、Linkedlist実装ファイルでフレンドメンバー関数として宣言されています。

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);

私はWebをクロールしましたが、これまでのところ解決策を見つけることができませんでした。どんなアドバイスも素晴らしいでしょう!

4

2 に答える 2

0

あなたのcursor->fetchData()はstd::stringを返していますか? もしそうなら、あなたはしなければなりません#include <string>。または、試してください

outs << cursor->fetchData().c_str() << " ";
于 2012-08-26T11:55:12.833 に答える