Es wird versucht, den Eingabeoperator >>
innerhalb einer lokalen Klasse zu überlasten. Ich habe versucht, friend istream &operator >>
innerhalb class Data
zu definieren.Wie definiert man einen Freund Funktionsoperator >> innerhalb einer lokalen Klasse?
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;
}
Es zeigt Fehler:
error: can't define friend function 'operator>>' in a local class definition
Eine Funktion kann in eine definiert werden Friend-Deklaration einer Klasse, wenn und nur wenn die Klasse eine nicht-lokale Klasse ist (9.8), der Funktionsname ist nicht qualifiziert und die Funktion hat einen Namespace-Bereich. – JLev
Gibt es eine Problemumgehung? Ich versuche den >> Operator für die Eingabe zu überladen. Ich muss dies innerhalb der Funktion readFile tun. Danke –
Die Problemumgehung besteht darin, nicht 'operator >>' zu verwenden, sondern eine 'read (istream & in)' Methode zu erstellen und sie mit 'd.read (cin)' aufzurufen. – Eljay