Funktionsdefinition in einer Memberfunktion einer klasse!!
-
Habe Klasse "MyClass", und die dazugehörige Memberfunktion "calc":
int cpp:
void MyClass::calc(){ int i,j; void summe(int a, int b){ } summe(i,j); }nun will ich eine funktion in calc defineren, da ich diese nur in dies funktion brauche....
aber der compiler motzut natürlich gibts da ne möglichkeit oder andere varianten??
-
Nein, das geht leider nicht - im Gegensatz zu (z.B.) Pascal kennt C(++) keine lokalen Funktionen. Aber du kannst die Funktion gerne außerhalb deiner Methode definieren und dann verwenden (wenn du willst, als static Funktion innerhalb der MyClass.cpp - dann bemerkt niemand anderes etwas von ihrer Existenz.
PS: Etwas problematisch, abver auch eine mögliche Alternative: Wenn die "Sub-Funktion" nicht zu groß ist, kannst du sie auch als Makro definieren.
-
Wenn du möchtest, kannst du aber lokale Funktoren definieren. Hier ein Beispiel:
#include <iostream> using namespace std; class foo { public: void calc() { struct summierer { int operator()(int a, int b) { return a + b; } }; summierer s; cout << s(3,5) << endl; } }; int main() { foo f; f.calc(); }
-
Konstruktör schrieb:
Wenn du möchtest, kannst du aber lokale Funktoren definieren....
Das ist eine gute Idee, auf die ich nicht gekommen wäre !
Danke,
Simon2.
-
Naja, für soetwas gibts auch "static" Functions bzw. nameless Namespaces. Oder auch das Function-Object Pattern.