c++中的Helper操作符问题
Helper Operator Issue in C++
我得到一个奇怪的错误时,试图返回我的操作系统在我的助手操作符。这是代码:
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&-然后你有引用,引用,不需要构造一个值,没有错误。
相关文章:
- 在使用放置新操作符时,我真的需要担心对齐问题吗
- Assert()函数抛出一个错误——操作符有问题
- 操作符+重载问题
- 下标操作符重载:返回引用问题
- 操作符重载问题
- 操作符重载问题
- 关于操作符new()和操作符delete()的问题
- c++操作符重载性能问题
- c++中切换操作符的问题
- 操作符重载问题
- 涉及数组指针时delete[]操作符的问题
- 编译问题相等/不相等操作符
- 操作符过载问题
- 矩阵类操作符重载,析构函数问题
- 类赋值操作符=问题
- c++ boost::线程操作符()()问题
- 关于()操作符重载的问题
- 关于模板中随机访问迭代器的操作符+重载的问题
- 三元操作符的指针转换问题
- 基类中操作符重载的问题