shimano Temat założony przez niniejszego użytkownika |
Zliczanie wektorów struktur: no match for 'operator=' » 2012-05-23 23:17:08 Witam, Znalazłem kilka odpowiedzi na to pytanie, ale kompletnie nie wiem, jak mam zastosować je u siebie. Posiadam kod: struct Krawedz { private: int skad; int dokad; int waga; public: void set( int _skad, int _dokad, int _waga ) { skad = _skad; dokad = _dokad; waga = _waga; } void pokaz() { cout << skad << " -> " << dokad << " (waga: " << waga << ")\n"; } };
class graf { }
void graf::rysujsuj() { cout << "Posiadam " << krawedzie.size() << " relacji. Oto one:\n"; vector < int >::iterator it; for( it = krawedzie.begin(); it < krawedzie.end(); it++ ) { cout << * it.pokaz(); } }
Z lekka dziwne dla mnie jest, że tutaj to nie działa, ale w innym miejscu dla innego typu (vector <int>) już identycznie pisany iterator działa. Proszę o pomoc. |
|
ison |
» 2012-05-23 23:45:49 vector < int >::iterator it; for( it = krawedzie.begin(); it < krawedzie.end(); it++ ) {
|
krawedzie to nie vector intów |
|
shimano Temat założony przez niniejszego użytkownika |
» 2012-05-24 00:16:05 Tyle wiadomo, ale jak to zwalczyć?
|
|
ison |
» 2012-05-24 00:20:28 vector < Krawedz >::iterator it; |
|
shimano Temat założony przez niniejszego użytkownika |
» 2012-05-24 00:23:41 No cóż, jakby to było takie proste... Oczywiście przy czymś takim kompilator zwraca błąd, że nie ma operatora << przy wyświetlaniu wyników |
|
akwes |
» 2012-05-24 00:33:50 @shimano
To jest proste, tylko Ty nie masz zielonego pojęcia o programowaniu.
Nie wiesz do czego służy cout, albo nie wiesz co to jest wartość zwracana przez funkcję.
cout << pokaz();
gdzie pokaz(); to void pokaz(); to błąd.
cout może Ci wyświetlić zmienne typu char*, std::string, char[], int, float... ale nie to co Ty chcesz.
Albo nie używaj cout << pokaz(), albo spraw aby pokaz zwracało char * lub std::string. |
|
shimano Temat założony przez niniejszego użytkownika |
» 2012-05-24 08:10:51 Udało mi się uzyskać zamierzony efekt przez vector < Krawedz >::iterator it; for( it = krawedzie.begin(); it < krawedzie.end(); it++ ) { it->pokaz(); }
Jednakże nie wiem dlaczego akurat strzałka, ale o tym sobie doczytam, żeby zrozumieć. |
|
akwes |
» 2012-05-24 12:51:01 @shimano,
nie chodzi tutaj o strzałkę :) Po prostu w drugiej wersji wywaliłeś "cout <<", co trzeba było zrobić :P |
|
« 1 » 2 |