c++中的Helper操作符问题

Helper Operator Issue in C++

本文关键字:问题 操作符 Helper 中的 c++      更新时间:2023-10-16

我得到一个奇怪的错误时,试图返回我的操作系统在我的助手操作符。这是代码:

std::ostream operator<<(std::ostream& os, const Item& i) {
    i.display(os);
    return os;
}

我正在使用的编译器告诉我它是不可访问的,但我不知道为什么或如何修复它。什么好主意吗?

std::ostream不可复制,您应该通过引用返回

std::ostream& operator<<(std::ostream& os, const Item& i)
//          ^

您定义了操作符<<()来返回ostream—一个值—但是您将os作为引用,因此返回将隐式地调用ostream的复制构造函数来生成要返回的值。ostream没有复制构造函数,因此出现错误。只需将operator<<()定义的返回类型更改为ostream&-然后你有引用,引用,不需要构造一个值,没有错误。