4

これを実行しようとするとエラーが発生します

friend std::ostream& operator<<(std::ostream& os, const hand& obj)
{
    return obj.show(os, obj);
}

ここで、handは私が作成したクラスであり、showは

std::ostream& hand::show(std::ostream& os, const hand& obj)
{
    return os<<obj.display[0]<<obj.display[1]<<obj.display[2]<<obj.display[3]<<obj.display[4];
}

ここで、displayはとして宣言されていchar display[6]ます。

エラーの意味を知っている人はいますか?

4

2 に答える 2

9

メソッドを作成hand::show(...)する必要があります。constそして、obj参照を渡すことは意味がありません-それはすでに' this'ポインタとしてそれを受け取ります。

これは機能するはずです:

class hand {
public:
  std::ostream& show(std::ostream &os) const;
...
};

friend std::ostream& operator<<(std::ostream& os, const hand& obj)
{
    return obj.show(os);
}
于 2009-05-30T00:58:14.240 に答える
2

関数自体もconstである必要があります(最初の行の最後にある「const」に注意してください)。

std::ostream& hand::show(std::ostream& os, const hand& obj) const
{
    return os<<obj.display[0]<<obj.display[1]<<obj.display[2]<<obj.display[3]<<obj.display[4];
}
于 2009-05-30T00:55:27.757 に答える