001
09.12.2003, 09:54 Uhr
(un)wissender
Niveauwart
|
Für alle die die Antwort interessiert, so geht es: (hilfreich war: Memberfunktionen )
C++: |
#include <iostream> using namespace std;
//Das Funktionsobjekt template <typename retValue, typename className> class my_mem_fun_t { public: typedef retValue(className::*function)(); my_mem_fun_t(function fnc) : m_fnc(fnc) {} retValue operator()(className &name) { return (name.*m_fnc)(); //für pointer ->* nutzen! } private: function m_fnc; };
//Die Funktion template <typename retValue, typename className> my_mem_fun_t<retValue, className> my_mem_fun(retValue(className::*function)()) { return my_mem_fun_t<retValue, className>(function); }
//Testklasse. class Dummy { public: void test(); };
void Dummy::test() { cout << "test!!" << "\n"; }
int main() { Dummy dum; my_mem_fun(&Dummy::test)(dum); //my_mem_fun_t<void, Dummy> mm = my_mem_fun(&Dummy::test); //mm(dum); return 0; }
|
Gruß -- Wer früher stirbt ist länger tot. Dieser Post wurde am 09.12.2003 um 09:55 Uhr von (un)wissender editiert. |