myclass
は私が作成したC++クラスであり、次のように記述します。
myclass x;
cout << x;
integer
またはfloat
値のように、10
または20.2
を出力するにはどうすればよいですか?
通常、operator<<
クラスの場合:
struct myclass {
int i;
};
std::ostream &operator<<(std::ostream &os, myclass const &m) {
return os << m.i;
}
int main() {
myclass x(10);
std::cout << x;
return 0;
}
<<
演算子をオーバーロードする必要があります。
std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
os << obj.somevalue;
return os;
}
その後、cout << x
(ここではx
はmyclass
型です)を実行すると、メソッドで指定した内容が出力されます。上記の例の場合、x.somevalue
メンバーになります。
メンバーの型をostream
に直接追加できない場合、上記と同じ方法を使用して、その型の<<
演算子もオーバーロードする必要があります。
それは非常に簡単で、実装するだけです:
std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
os << foo.var;
return os;
}
Outpoutをチェーンするには、osへの参照を返す必要があります(cout << foo << 42 << endl)
代替案:
struct myclass {
int i;
inline operator int() const
{
return i;
}
};