Zeiger auf Funktion einer Klasse?



  • Hi,

    Ich hab zwei Klasse, die eine davon hat ne Funktion in welcher ich als Parameter den Zeiger auf ne Funktion mitgeben kann.

    void setOGLfunctions(void(*OGL_b)(), void(*OGL_a)());
    

    Nun ruf ich diese Funktion in einer zweiten Klasse auf. Wenn ich nen Zeiger auf ne globale Funktion mitgebe, dann klappt das. Wenn ich allerdings eine Funktion dieser zweiten Klasse mitgebe, dann nicht:

    no matching function for call to `Face::setOGLfunctions(
       NULL, <unknown type>)'
    

    Frage: Wie krieg ich nen Pointer auf meine Funktion innerhalb der Klasse den ich so mitgeben kann?



  • Schau mal in die FAQ, da steht ein Artikel wie es geht.

    Devil



  • Hm, da seh ich nur, was ich bereits habe.
    Das Prob ist, innerhalb einer Klasse auf ne Funktion dieser Klasse zu zeigen. Ich hab also ne Klasse "Blood" und ne Funktion "Blood::display". Innerhalb der Klasse kann ich aber nur auf globale Funktionen zeigen, nicht auf die Blood::display 😕



  • du übergibst noch die klasse selber, und rusft dann display so auf:
    blood* a;
    a->display;



  • So:

    class DeineKlasse
    {
    static void __stdcall DeineFunktion();
    };
    

    müsste es gehen.



  • Ein Template als Beispiel:

    template <class Type>
    class Method_pointer : public DirScanner
    {
    	string error;
    	Type *t;
    	void (Type::*method)(string pfad);
    protected:
    	virtual void ScanFile(string pfad)
    	{
    		(*t.*method)(pfad);
    	}
    
    	virtual void ShowError(string message)
    	{
    		error = message;
    	}
    public:
    	string GetError(){return error;}
    	Method_pointer(Type* obj, void (Type::*_method)(string pfad))
    	{
    		method = _method;
    		t =obj;
    		error = "No Error";
    	}
    	virtual ~Method_pointer(){};
    };
    

    Devil


Anmelden zum Antworten