現在、「<<」演算子をオーバーロードしようとしていますが、次のエラーメッセージが表示され続けます。
関数'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をクロールしましたが、これまでのところ解決策を見つけることができませんでした。どんなアドバイスも素晴らしいでしょう!