Strona 1 z 1

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

: 17 sty 2010, o 12:22
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ć?

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

: 18 sty 2010, o 20:00
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.

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

: 18 sty 2010, o 21:07
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; 
}