[英]How to define a friend function operator>> inside a local class?
Trying to overload input operator >>
inside a local class. 试图在本地类中重载输入运算符
>>
。 I tried to define friend istream &operator >>
inside class Data
. 我试图在
class Data
定义friend istream &operator >>
。
int readFile(char* file_name,float temperature_data[][31])
{
class Data
{
public:
int day,month,year;
float temp;
friend istream & operator >> (istream &in, Data &c)
{
char ch;
in >> c.day;
in >> ch;
in >> c.month;
in >> ch;
in >> c.year;
in >> ch;
in >> c.temp;
return in;
}
};
freopen(file_name,"r",stdin);
int i;
Data d;
for(i=0;;i++)
{
int total=0;
char ch;
cin>>d;
temperature_data[d.month-1][d.day-1] = d.temp;
ch = getchar();
if(ch==EOF)
break;
}
fclose(stdin);
return d.year;
}
It's showing error: 显示错误:
error: can't define friend function 'operator>>' in a local class definition
Here's what I'm thinking, from my comment, which you'd call with d.read(cin)
: 根据我的评论,这就是我的想法,您可以使用
d.read(cin)
调用它:
class Data {
public:
int day,month,year;
float temp;
void read(istream& in) {
char ch;
in >> day;
in >> ch;
in >> month;
in >> ch;
in >> year;
in >> ch;
in >> temp;
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.