1. ホーム
  2. c++

[解決済み] Java の toString に相当する C++?

2022-04-23 13:01:33

質問

ストリームに書き込まれる内容を制御したい、つまり cout カスタムクラスのオブジェクトのために。C++でそれは可能でしょうか?Javaでは toString() メソッドで同様のことができます。

どのように解決するのですか?

C++では、オーバーロードすることができます。 operator<< に対して ostream とカスタムクラスで構成されます。

class A {
public:
  int i;
};

std::ostream& operator<<(std::ostream &strm, const A &a) {
  return strm << "A(" << a.i << ")";
}

こうすることで、クラスのインスタンスをストリームに出力することができます。

A x = ...;
std::cout << x << std::endl;

もし、あなたの operator<< クラスの内部をプリントアウトしたい A この関数をフレンド関数として宣言することもできます。

class A {
private:
  friend std::ostream& operator<<(std::ostream&, const A&);
  int j;
};

std::ostream& operator<<(std::ostream &strm, const A &a) {
  return strm << "A(" << a.j << ")";
}