[C++] Problem z foreach w listach
Ostatnio zmodyfikowano 2013-01-17 09:09
tmk29121992 Temat założony przez niniejszego użytkownika |
[C++] Problem z foreach w listach » 2013-01-16 22:17:45 Witam, w trakcie pisanie zaciąłem się na klasie Ewidencja a dokładnie na znajdującym się w niej for each'u i nie bardzo wiem jak go rozwiązać. Chcę żeby została przeszukana cała lista w poszukiwaniu samochodów czteroosobowych a mi wywala błąd dla EW i nie mam pojęcia dlaczego. Wie ktoś może jak temu zaradzić? Wiem że w C# można tak używać foreach ale nie mam zielonego pojęcia czy jest to dozwolone w C++ #include <iostream> #include <string> #include <list> using namespace std;
class Samochod { public: int rok_produkcji; string marka; Samochod() : rok_produkcji( NULL ) , marka( NULL ) { } Samochod( int rp, string m ) : rok_produkcji( rp ) , marka( m ) { } };
class Osobowy : public Samochod { private: public: int liczba_osob; Osobowy() : liczba_osob( 0 ) { } Osobowy( int rp, string m, int ls ) : Samochod( rp, m ) , liczba_osob( ls ) { } };
class Ewidencja { private: public: Osobowy * X; list < Samochod > EW; Ewidencja() { } void pusty() { EW.clear(); } void dopisz( Samochod S ) { EW.push_back( S ); } void usun() { EW.pop_back(); } int cztero() { int suma; for each( Samochod S in EW ) { if( X->liczba_osob == 4 ) suma++; return suma; } } };
|
|
Admixior |
» 2013-01-17 01:21:02 Używanie for each nie tyle jest niedozwolone, co w ogóle takiego czegoś nie ma. (W C++11 jest chyba foreach ale jak dokładnie działa nie wiem). Klasa vectora zawiera w sobie taką funkcję http://www.cplusplus.com/reference/algorithm/for_each/. Jeśli twój kompilator używa c++11 to możesz wysłać funkcje lambda //wręcz idealnie się do takiego celu przyda myvector.for_each( myvector.begin(), myvector.end(), [ & suma ]( vector < blabla >& obj )->void { if( obj.liczba_osob == 4 ) suma++; } ); Ewentualnie jesteś zmuszony do pętli for(;;) |
|
DejaVu |
» 2013-01-17 09:09:28 Jest pętla foreach, ale od standardu C++11. std::vector < int > vKontener;
for( auto & element: vKontener ) { }
|
|
« 1 » |