Как определить оператор функции-друга & gt; & gt; внутри местного класса?

Попытка перегрузить оператор ввода >> внутри местного класса. Я пытался определить friend istream &operator >> внутри class Data,

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;
}

Это показывает ошибку:

error: can't define friend function 'operator>>' in a local class definition

0

Решение

Вот что я думаю из моего комментария, который вы бы назвали 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;
}
};
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]