Problem z wyłuskaniem z std::istream* operatora >>
Ostatnio zmodyfikowano 2015-02-18 11:33
Fireho Temat założony przez niniejszego użytkownika |
Problem z wyłuskaniem z std::istream* operatora >> » 2015-02-18 10:53:28 Witam, oto cały kod: http://wklej.to/cicJMOto zawartość dane.txt: http://wklej.to/KkmayMam problem z użyciem operatora >> na wskaźniku do klasy std::istream. Ważny kawałek kodu: void CGraf::Connect( std::istream * in, std::ostream * out = NULL ) { if( out ) * out << "Dodawanie nowego polaczenia\nPunkt A: "; std::string a, b; TDlugosc dlugosc; * in >> a; if( out ) out->operator <<( "Punkt B: " ); in->operator >>( b ); if( out ) out->operator <<( "Dlugosc: " ); in->operator >>( dlugosc ); if( out ) out->operator <<( "\n" ); Connect( a, b, dlugosc ); } Błąd: error: no matching function for call to 'std::basic_istream<char>::operator>>(std::string&)'| |
Potem są uwagi o możliwych wersjach funkcji które chciałem użyć. Ale dlaczego? Czym różni się dereferencja i użycie samego >>, a czym wyłuskanie ze wskaźnika funkcji operator>>? I dlaczego nie działa to na std::string, ale z TDlugosc(czyt. unsigned int) wszystko chodzi idealnie? |
|
Monika90 |
» 2015-02-18 11:26:09 To działa z unsigned int a nie ze string, ponieważ operator wczytujacy do unsigned int jest funkcją składową (metodą) klasy istream, natomast operator wczytujacy do stringa nie jest składową. Więc powinno być tak Albo po prostu tak co zadziała w obu przypadkach. |
|
Fireho Temat założony przez niniejszego użytkownika |
» 2015-02-18 11:33:06 Dzięki, to wszędzie porobię * in >> b; aby jakaś spójność w kodzie była. |
|
« 1 » |