statischer Member-Funktionszeiger
-
Hallo,
ist es möglich einen Member Funktionszeiger als static zu deklarieren?
Ich möchte dass der Funktionszeiger, wenn von einer Instanz zugewiesen, dieser für alle Instanzen gilt.Momentan hapert es daran, dass er die Static-Definition im cpp file nicht mag:
header-datei: class CStaticTest { public: void SetFunction(void (*MyFunction)(const int, const std::string&)) { functionPointer = &functionStd; } void execute(const int a, const std::string& b) { functionPointer(a, b); }; private: static int test1; static void functionStd(const int a, const std::string& b) { //.. }; static void (*functionPointer)(const int,const std::string&); }; cpp-datei #include "dieheader.h" int CStaticTest::test1=1 //funktioniert void (*MyFunction)(const int, const std::string&) CStaticTest::functionPointer=&CStaticTest::functionStd; //Fehler: "Es fehlt ; vor CStaticTest::functionPointer" "Fehlender Typspezifizierer int wird angenommen"Jemand eine Idee?
-
Habe den Funktionszeiger erstmal in eine zusätzliche Klasse gesteckt, und ein Objekt davon als statisch in der Hauptklasse definiert. Scheint zu funktionieren...
-
Die Definition muss so aussehen:
void (*CStaticTest::functionPointer)(int, const std::string&) = ...;Wenn Du ein typedef a la
typedef void FunctionType(int, const std::string&);hättest, wär Dir der Fehler wahrscheinlich nicht unterlaufen:
FunctionType* CStaticTest::functionPointer = ...;kk