000
15.12.2007, 15:45 Uhr
banshee
|
hallo,
alles, was jetzt folgt, dreht sich um folgendes Codestück:
C++: |
struct Delete { template<typename T> void operator()(T* p) { delete p; } };
std::for_each(entries.begin(), entries.end(), Delete());
|
Ich möchte einfach mal wiedergeben, wie ich das ganze verstehe, weil ich mir nicht sicher bin, ob ich es in seiner Gesamtheit richtig verstanden habe.
Also zunächst einmal wird eine Struktur definiert und deren Funktionsausruf-Operator als template überladen. Im Template wird dann einfach das übergebene Objekt gelöscht. Und in der Codezeile darunter werden dann alle Elemente eines Vektors nacheinander gelöscht. Da weiß ich aber nicht, wie das genau funktioniert. Der dritte Parameter von for_each muss ja eine Funktion sein. Wird da jetzt erst der Konstruktor der Struktur aufgerufen, um dann direkt an den überladenen Operator ranzukommen oder wie soll ich mir das vorstellen?
Meine zweite Frage wäre, was diese Struktur modellieren soll, weil man könnte doch auch einfach ein Funktionstemplate schreiben.
Danke schonmal im Voraus Dieser Post wurde am 15.12.2007 um 15:46 Uhr von banshee editiert. |