1. ホーム
  2. c++

[解決済み】演算子 << は正確に1つの引数を取る必要がある

2022-02-06 06:32:26

質問

a.h

#include "logic.h"
...

class A
{
friend ostream& operator<<(ostream&, A&);
...
};

logic.cpp

#include "a.h"
...
ostream& logic::operator<<(ostream& os, A& a)
{
...
}
...

コンパイルすると、こう表示されます。

std::ostream& logic::operator<<(std::ostream&, A&)' は正確に1つの引数を取る必要があります。

何が問題なのでしょうか?

解決方法は?

問題は、クラス内部で定義していることで、これは

a) つまり、第2引数は暗黙のうちに ( this) と

b) それは、あなたがしたいこと、すなわち拡張を行うことはありません。 std::ostream.

自由関数として定義する必要があります。

class A { /* ... */ };
std::ostream& operator<<(std::ostream&, const A& a);