Artykuł o przeładowaniu operatorów
Ostatnio zmodyfikowano 2018-04-15 12:43
aram100 Temat założony przez niniejszego użytkownika |
Artykuł o przeładowaniu operatorów » 2018-04-15 11:01:58 Hej, nie rozumiem trochę tego tematu o przeładowywaniu operatorów. Załóżmy, że generuję dynamiczną tablicę stringów: int rozmiar; cin >> rozmiar; string * wskaznik; wskaznik = new string[ rozmiar ]
i teraz w pętli chcę wypełnić te tablicę stringami za pomocą operatora >> Jak mam użyć tego przeładowania, aby dało to się zrobić? ostream & operator >>( ostream & wyjscie, const string & s, string * wsk ) { return wyjscie >> & s >> * wsk; }
nie działa |
|
pekfos |
» 2018-04-15 11:26:17 A jak twoim zdaniem ma działać operator o 3 argumentach? |
|
aram100 Temat założony przez niniejszego użytkownika |
» 2018-04-15 12:32:18 No rzeczywiście głupotę zrobiłem. Szczerze mówiąc nie rozumiem za bardzo jak to działa |
|
YooSy |
» 2018-04-15 12:43:04 _zwracany_typ_ & operator >>( const _zwracany_typ_ &, const _typ_ & ); |
Jak widać w prototypie operator>> definiowany poza klasą przyjmuje dwa argumenty. Lewostronnie obiekt strumienia, który przekazujemy w pierwszym argumencie i prawostronny obiekt, który przekazujemy jako drugi argument. #include <vector> #include <iostream>
std::istream & operator >>( std::istream & is, std::vector < int >& v ) { for( auto & el: v ) { is >> el; } return is; }
std::ostream & operator <<( std::ostream & os, std::vector < int >& v ) { for( auto const & el: v ) { os << el; } return os; }
int main() { std::vector < int > v( 3 ); std::cin >> v; std::cout << v; }
|
|
« 1 » |