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 回答