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.


Anmelden zum Antworten