langsamversteher
Grünschnabel
C++ methode als argument übergeben / Neue FRAGE!
Hallo,
So, ich hab mir den Typ der Funktion als eigenständigen Typ definiert,
weil ich den Zeiger für ein CALLBACK zwischenspeichern muß.
Mit Deiner Definition wollte er's nicht annehmen, trotzdem Danke,
es hat weitergeholfen.
Das ganze sieht dann wie folgt aus:
// test.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
char thisFunc(int testvar, char varb)
{
return 'a';
}
typedef char (*FuncType)(int, char);
void callFuncA( FuncType funcA )
{
int a;
char b;
FuncType funcpointer;
a = 1234;
b = (char)0;
funcpointer = funcA;
b = funcpointer(a, 'b');
printf("%c\n", b);
fflush(NULL);
}
int _tmain(int argc, _TCHAR* argv[])
{
callFuncA(thisFunc);
return 0;
}
Mein eigentliches Problem war aber, einen Zeiger auf eine Methode
einer C++-Klasse zu übergeben, um eine virtuelle WndProc zu bekommen.
Mit einigem Probieren und Suchen auf der MSDN-Seite kam ich dann auf
folgendes (für alle dies interessiert):
// test.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
class MyClass
{
public:
MyClass(void);
~MyClass(void);
char thisFunc(int testvar, char var_b);
//FuncType GetFuncPoint(void);
};
MyClass::MyClass(void)
{
}
MyClass::~MyClass(void)
{
}
typedef char (MyClass::*FuncType)(int, char);
char thisFunc(int testvar, char var_b)
{
return 'a';
}
/*FuncType GetFuncPoint(void)
{
return thisFunc;
}*/
void callFuncA( FuncType funcA )
{
int a;
char b;
FuncType funcpointer;
a = 1234;
b = (char)0;
funcpointer = funcA;
b = funcpointer(a, 'b');
printf("%c\n", b);
fflush(NULL);
}
int _tmain(int argc, _TCHAR* argv[])
{
FuncType funcpoint;
MyClass* class_var;
class_var = new MyClass();
//funcpoint = class_var->GetFuncPoint();
funcpoint = class_var->thisFunc;
callFuncA(funcpoint);
return 0;
}
Wer es noch etwas genauer wissen will (Zwecks Klassen ableiten),
kann mir jamal ne Mail schreiben, dem helfe ich dann auch gerne weiter.
virtual_user(~No#Spam)gmx .de
Martin
Hallo,
So, ich hab mir den Typ der Funktion als eigenständigen Typ definiert,
weil ich den Zeiger für ein CALLBACK zwischenspeichern muß.
Mit Deiner Definition wollte er's nicht annehmen, trotzdem Danke,
es hat weitergeholfen.
Das ganze sieht dann wie folgt aus:
// test.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
char thisFunc(int testvar, char varb)
{
return 'a';
}
typedef char (*FuncType)(int, char);
void callFuncA( FuncType funcA )
{
int a;
char b;
FuncType funcpointer;
a = 1234;
b = (char)0;
funcpointer = funcA;
b = funcpointer(a, 'b');
printf("%c\n", b);
fflush(NULL);
}
int _tmain(int argc, _TCHAR* argv[])
{
callFuncA(thisFunc);
return 0;
}
Mein eigentliches Problem war aber, einen Zeiger auf eine Methode
einer C++-Klasse zu übergeben, um eine virtuelle WndProc zu bekommen.
Mit einigem Probieren und Suchen auf der MSDN-Seite kam ich dann auf
folgendes (für alle dies interessiert):
// test.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
class MyClass
{
public:
MyClass(void);
~MyClass(void);
char thisFunc(int testvar, char var_b);
//FuncType GetFuncPoint(void);
};
MyClass::MyClass(void)
{
}
MyClass::~MyClass(void)
{
}
typedef char (MyClass::*FuncType)(int, char);
char thisFunc(int testvar, char var_b)
{
return 'a';
}
/*FuncType GetFuncPoint(void)
{
return thisFunc;
}*/
void callFuncA( FuncType funcA )
{
int a;
char b;
FuncType funcpointer;
a = 1234;
b = (char)0;
funcpointer = funcA;
b = funcpointer(a, 'b');
printf("%c\n", b);
fflush(NULL);
}
int _tmain(int argc, _TCHAR* argv[])
{
FuncType funcpoint;
MyClass* class_var;
class_var = new MyClass();
//funcpoint = class_var->GetFuncPoint();
funcpoint = class_var->thisFunc;
callFuncA(funcpoint);
return 0;
}
Wer es noch etwas genauer wissen will (Zwecks Klassen ableiten),
kann mir jamal ne Mail schreiben, dem helfe ich dann auch gerne weiter.
virtual_user(~No#Spam)gmx .de
Martin
Zuletzt bearbeitet: