Ich weiß, das Ding funktioniert:Wie Übergeben einer Klassenmethode als ein Argument für eine andere Funktion in C++ und OpenGL?
void myDisplay()
{
...
}
int main()
{
...
glutDisplayFunc(myDisplay)
...
}
so habe ich versucht, myDisplay() Funktion zu einer Klasse gehören, die ich gemacht. Weil ich es in der Zukunft mit einer anderen Klasse überladen möchte. Allerdings wirft der Compiler, dass
argument of type 'void (ClassBlah::)()' does not match 'void(*)()' .
Hier ist das, was ich versuche zu machen:
class ClassBlah
{
....
void myDisplay()
....
}
......
int main()
{
...
ClassBlah blah
glutDisplayFunc(blah.myDisplay)
...
}
Hat jemand weiß, wie man dieses Problem zu beheben? Danke vielmals.
Das ist cool. Funktioniert es ordnungsgemäß, wenn memberThreadFunc virtuell ist und & a auf eine Unterklasse verweist? – kibibu
Ich bezweifle, boost :: bind wird hier funktionieren, da das sicherlich eine Struktur zurückgibt, die einen() -Operator hat, etwas, das GlutDisplayFunc nicht verwenden kann. – Thanatos
Bind kann hier nicht helfen. Die aufgerufene Funktion erfordert einen Callback vom Typ 'void (*)()'. Ein 0-artiges Funktionsobjekt kann nicht verwendet werden. –