C++: Problem med list<T>::remove_if

Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Aug 2005

C++: Problem med list<T>::remove_if

Hej! Som rubriken lyder har jag lite problem.
Jag kan inte förstå vad som är fel genom att läsa felkoderna som blir och jag verkar inte förstå dokumentationen

cl är en liten testklass som i princip består av några onödiga ints och en bool active.
Funktionen isActive() returnerar bool.

class cl { public: cl(){i=0;o=10; active=true;}; ~cl(){}; void setI(int g=100){i=g;}; int getI(){return i;}; void setActive(bool sf){active=sf;}; bool isActive(){return active;}; private: int i,o; bool active; };

Listan test innehåller några cl. Vissa cl.active=true, vissa false.

int main() { list<cl> lCl; cl wookie; vec.push_back(wookie); vec.push_back(wookie); removeInactive(&vec); return 0; }

Och här är alltså funktionen som jag behöver hjälp med

void removeInactive(list<cl> *test) { for(list<cl>::iterator it=test->begin();it!=test->end();it++) test->remove_if(it->isActive()); }

Trädvy Permalänk
Medlem
Registrerad
Aug 2009

Känns som en skoluppgift, men kan hjälpa dig lite med documentationen iaf..

"one argument of the same type as the list and returning a bool"

Så I ditt fall så måste du ge remove_if() en funktion som den nedanför..

bool func( const cl& value );

(och du behöver inte iterera över listan.. remove_if gör det åt dig)

Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Aug 2005
Citat:

Ursprungligen inskrivet av Aegnor
Känns som en skoluppgift, men kan hjälpa dig lite med documentationen iaf..

"one argument of the same type as the list and returning a bool"

Så I ditt fall så måste du ge remove_if() en funktion som den nedanför..

bool func( const cl& value );

(och du behöver inte iterera över listan.. remove_if gör det åt dig)

Aha! Tack så mycket!
Och nej det är ingen skoluppgift, jag försöker bara bli bättre på kontainerklasser.
(För skolans skull i och för sig, men det är ingen uppgift).