[C++]Przeładowanie operatora >>.

Mikolaj9
Użytkownik
Użytkownik
Posty: 535
Rejestracja: 19 gru 2008, o 15:52
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 49 razy
Pomógł: 62 razy

[C++]Przeładowanie operatora >>.

Post autor: Mikolaj9 »

Chciałbym napisać operator >> dla mojej klasy a w internecie nie mogę znaleźć nic konkretnego na jego temat.

Jego działanie ma polegać na tym, że kiedy wpiszę ileś tam floatów porozdzielanych przecinkami lub spacjami, to załaduje je do obiektu mojej klasy i wyświetli informację o błędzie oraz zostanie wywołany po raz kolejny, jeśli poda się mu coś innego niż float (np. literę czy jakiś znak).

Jak to zrobić?
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

[C++]Przeładowanie operatora >>.

Post autor: soku11 »

Operator>> ma proste zadanie - ma pobrać dane ze strumienia wejściowego i przetworzyć je jakoś dla swojego użytku. Wywołanie siebie samego spowoduje nieskończoną pętlę.
Ogólnie nie wiem w czym masz problem. Masz zdefiniowane jak to ma działać, co ma wczytywać, więc wystarczy teraz o tylko napisać...

Pozdrawiam.
Fibik
Użytkownik
Użytkownik
Posty: 953
Rejestracja: 27 wrz 2005, o 22:56
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 11 razy
Pomógł: 74 razy

[C++]Przeładowanie operatora >>.

Post autor: Fibik »

operatory ze strumieniami normalnie definiujesz:

Kod: Zaznacz cały

istream& operator >> (istream &s, TClassA &a)
{
 float f;
 s >> f; // czytasz float lub coś tam.
 a.set(f); // robisz coś z tym...
 return s; // zwracasz strumień (żeby można było składać s >> f >> x >> t ...)
}

możesz czytać cały plik w pętli:
istream& operator >> (istream &s, TClassA &a)
{
 while( !s.eof() )
 {
  float f; 
  s >> f;
  a.set(f);
  char c; s.getc(c); // jakoś tak pomijamy przecinki...
 }
 return s; 
}
ODPOWIEDZ