Funktionszeiger erstellen



  • Kenner der Scene 2 schrieb:

    thordk schrieb:

    int foo(double x, int y) {
    	return 42;
    }
    

    Das nennst du eine Methode? Du bist mir so ein Held...

    wär dir 23 lieber gewesen?



  • thordk schrieb:

    Kenner der Scene 2 schrieb:

    thordk schrieb:

    int foo(double x, int y) {
    	return 42;
    }
    

    Das nennst du eine Methode? Du bist mir so ein Held...

    wär dir 23 lieber gewesen?

    Ich glaube das bezog sich eher darauf, dass man "Methode" allgemein nur für Funktionen verwendet, die in Klassen definiert sind. Es gibt aber keine wirklich eindeutige Definition.



  • vielleicht sollte man auch anfangen, auf std::tr1::function hinzuweisen.



  • Man erwähne auch für mich komische Sachen wie:

    void dol(int z) { }
    
    void (*func)(int);
    
    //Funktionszeiger auf Funktion zeigen lassen
    func = dol;
    //oder auch
    func = &dol;
    
    //Funktion durch Funktionszeiger aufrufen
    func(5);
    //oder auch
    (*func)(5);
    

    Man sieht es gibt auch immer zwei Möglichkeiten, kann auch noch andere aber geben, bin mir nicht sicher ...



  • Konrad Rudolph schrieb:

    thordk schrieb:

    Kenner der Scene 2 schrieb:

    thordk schrieb:

    int foo(double x, int y) {
    	return 42;
    }
    

    Das nennst du eine Methode? Du bist mir so ein Held...

    wär dir 23 lieber gewesen?

    Ich glaube das bezog sich eher darauf, dass man "Methode" allgemein nur für Funktionen verwendet, die in Klassen definiert sind. Es gibt aber keine wirklich eindeutige Definition.

    nach den mir bekannten definitionen ist methode der allgemeinere begriff. wenn man unterscheiden möchte, dann in funktion und prozedur. wobei das mit klassen nichts zu tun hat. gibt ja nicht ohne grund worte wie "memberfunction" etc. ^^



  • hi

    kann ich auh mit folgender klasse einen funktionszeiger machen?

    class Steuer
    {
    public:
    int get_Miete() { return miete; };
    void set_Miete(int xyz) { miete = xyz; }
    private:
    int miete;
    }
    

    mit freundlichen grüse masterofmA*



  • edit: sry hab das Semikolon hinter der letzten geschweiften klammer vergessen, bitte nicht als Fehler gelten lassen ^^



  • Nein, Funktionszeiger sind nicht kompatibel zu Klassenmethoden (das Problem ist hauptsächlich der this-Zeiger), aber dafür gibt es in C++ Methodenzeiger:

    void (Steuer*::setter)(int) =&Steuer::set_Miete;
    Steuer st;
    (Steuer.*setter)(4711);
    

    (bei der Klammerung bin ich mir nicht zu 100% sicher)



  • CStoll schrieb:

    void (Steuer*::setter)(int) =&Steuer::set_Miete;
    Steuer st;
    (Steuer.*setter)(4711);
    
    void (Steuer*::setter)(int) =&Steuer::set_Miete;
    Steuer st;
    (st.*setter)(4711);
    

    😉



  • KasF schrieb:

    CStoll schrieb:

    void (Steuer*::setter)(int) =&Steuer::set_Miete;
    Steuer st;
    (Steuer.*setter)(4711);
    
    void (Steuer*::setter)(int) =&Steuer::set_Miete;
    Steuer st;
    (st.*setter)(4711);
    

    😉

    void (Steuer::*setter)(int) =&Steuer::set_Miete;
    Steuer st;
    (st.*setter)(4711);
    

    😉



  • 🙂


Anmelden zum Antworten