Bestimmten Bereich/Elemente einer std::list mit delete freigeben
-
hmm.. ich mach vorerst mal die funktionen global.. ungern aber egal jetzt:)
Nochmal was:
void operation(ELEM *ptr){ } ELEM::func(){ std::list<ELEM*::Iterator A=...,B=...; count_if(A,B,operation); }wie ereich das , das ich in der opeation funktion noch den this-zeiger aus func() übergenbe kann? damit ich in operatioen das this -Objekt mit Objekt der liste vergleichen kann?
-
Du liest auchmal deine eigenen Threads durch?
http://c-plusplus.net/forum/viewtopic-var-t-is-186541.html
-
echt erstaunlich
-
BorisDieKlinge schrieb:
hmm.. ich mach vorerst mal die funktionen global.. ungern aber egal jetzt:)
Aus welchem Grund denn ungern?
-
naja habe gelernt, man sollte keine golbalen variablen funktionen anlegen, auser es ist überhaupt nich anders machbar... da war ich 16;) 10 jahre lange routine ist nich so einfach umzubiegen;)
-
Jaja... Manchmal sind globale Funktionen sehr viel eleganter. Beispielsweise bei Operatorüberladung.
-
BorisDieKlinge schrieb:
naja habe gelernt, man sollte keine golbalen variablen funktionen anlegen, auser es ist überhaupt nich anders machbar... da war ich 16;) 10 jahre lange routine ist nich so einfach umzubiegen;)
nein, keine globalen variablen. funktionen sind ein anderes thema
-
CStoll schrieb:
BorisDieKlinge schrieb:
globale funktionen, zerlagen meine OO design;)
Man kann's auch übertreiben mit der OO-Fixierung

Sicher, kann man. Aber nicht mit Kapselung. Hierfür eine Funktion global auslagern zu müssen, ist inakzeptabel.
Aber es gibt doch für sowas 'std::mem_fun' und AFAIR in Boost auch noch eins drauf.
-
Konrad Rudolph schrieb:
Sicher, kann man. Aber nicht mit Kapselung. Hierfür eine Funktion global auslagern zu müssen, ist inakzeptabel.
Ich denke nicht dass es die Kapselung bricht, wenn man einen functor/eine freie funktion bastelt, die ein element löscht. wenn die funktion nicht im header sondern nur in der dazugehörigen cpp datei steht, dann kann man ja nichtmal einfach so drauf zugreifen.
-
Ein schöner Fall für boost::lambda:
for_each( A, B, bind( delete_ptr(), _1 ) );