web-dev-qa-db-ja.com

cout << myclassの使用方法

myclassは私が作成したC++クラスであり、次のように記述します。

myclass x;
cout << x;

integerまたはfloat値のように、10または20.2を出力するにはどうすればよいですか?

62
ali

通常、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;
}
77
Jerry Coffin

<<演算子をオーバーロードする必要があります。

std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
      os << obj.somevalue;
      return os;
}

その後、cout << x(ここではxmyclass型です)を実行すると、メソッドで指定した内容が出力されます。上記の例の場合、x.somevalueメンバーになります。

メンバーの型をostreamに直接追加できない場合、上記と同じ方法を使用して、その型の<<演算子もオーバーロードする必要があります。

19
Rich Adams

それは非常に簡単で、実装するだけです:

std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
   os << foo.var;
   return os;
}

Outpoutをチェーンするには、osへの参照を返す必要があります(cout << foo << 42 << endl)

8

代替案:

struct myclass { 
    int i;
    inline operator int() const 
    {
        return i; 
    }
};
0
Emil Mocan