插入和提取运算符不起作用
Insertion and Extraction operator doesn't work
只是在玩操作符重载,无法找出下面的代码有什么问题-
#include <iostream>
class Holder
{
public:
std::string name;
int data;
};
std::istream operator>>(std::istream& is, Holder &h)
{
std::cout<<"Enter name = "<<std::endl;
std::cin>>h.name;
std::cout<<"Enter data = "<<std::endl;
std::cin>>h.data;
return is;
}
std::ostream operator<<(std::ostream& os, Holder const &h)
{
std::cout<<"Name = "<<h.name<<std::endl;
std::cout<<"Data = "<<h.data<<std::endl;
return os;
}
int main(int argc, char **argv) {
Holder h;
std::cin>>h;
std::cout<<h;
}
我的MinGW编译器给出的错误是-
In file included from c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/ios:45:0,
from c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/ostream:40,
from c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/iostream:40,
from ..srcMain.cpp:1:
c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/bits/ios_base.h: In copy constructor 'std::basic_ios<char>::basic_ios(const std::basic_ios<char>&)':
c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/bits/ios_base.h:788:5: error: 'std::ios_base::ios_base(const std::ios_base&)' is private
c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/bits/basic_ios.h:64:11: error: within this context
In file included from c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/iostream:41:0,
from ..srcMain.cpp:1:
c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/istream: In copy constructor 'std::basic_istream<char>::basic_istream(const std::basic_istream<char>&)':
c:mingwbin../lib/gcc/mingw32/4.6.1/include/c++/istream:57:11: note: synthesized method 'std::basic_ios<char>::basic_ios(const std::basic_ios<char>&)' first required here
..srcMain.cpp: In function 'std::istream operator>>(std::istream&, Holder&)':
..srcMain.cpp:18:9: note: synthesized method 'std::basic_istream<char>::basic_istream(const std::basic_istream<char>&)' first required here
通过引用返回:
std::istream& operator>>(std::istream& is, Holder &h)
std::ostream& operator<<(std::ostream& os, Holder const &h)
//^
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 重载运算符 (<<) cout 在 c ++ 中不起作用,当我互相减去两个矩阵时不起作用
- std::string == 运算符在代码中不起作用
- C++11+=当RHS有多个字符串或字符时,运算符不起作用
- 运算符的全局过载<<不起作用,为什么?
- 自定义类型转换运算符在转发引用上调用时不起作用(当对象按值传递时有效)
- 为什么重载运算符>在参数声明 const 时不起作用?
- 重载"+="运算符:c+=a_times_b 有效,但 c+=a*b 不起作用?
- C++宏"##"在"->"运算符后不起作用
- 为什么“运算符<<(cout,double)”不起作用
- 相等运算符优先级不起作用
- C++ - 父级中的 CRTP 分配运算符不起作用
- 隐式用户定义的转换不起作用,因为在编译C 时无法识别运算符和转换构造函数
- 赋值不起作用,但带有取消引用运算符的地址起作用?
- C++ 运算符重载 += 有效,但<<不起作用
- 需要使用 Book* 头变量重载运算符,但不起作用
- C++ 运算符删除重载对派生类不起作用
- 为什么重载运算符上的异常说明符'<<'不适用于任何 std::ostream 对象,但对库中定义的运算符不起作用?
- 运算符重载如何工作,为什么在我的情况下不起作用?
- 为什么COUT在朋友函数中不起作用,该功能超载了操作员&lt;&lt;这是一个iStream运算符