Pointer auf Klassenmethode



  • Hallo,

    ich habe eine frage über Pointer,
    ich habe eine Klasse CRender diese läuft in einer
    Schleife etwa so:

    void *Object[100];
    lpD3DDevice->BeginScene();
    for(unsigned int AllObjects=0; AllObjects<ObjectCnt; AllObjects++){
    Object[AllObjects];
    }
    lpD3DDevice->EndScene();

    Jede weitere Klasse muß ihre Draw Funktion bei der Render Klasse registrieren.
    Das heißt ich brauche den Pointer auf z.B. CTriangle.Draw(). Aber bei dem Versuch
    den Pointer dieser Draw Funktion zu bekommen werde ich mit Konvertierungsfehlern
    überhäuft.



  • Probier mal vor die Methode ein static zu setzen, dann ruft er es auch unter dem gewünschten __cdecl auf, daß der Compiler bemeckert.



  • Da folgt auch schon das nächste Problem.
    Meine Draw Funktion sieht bisher wie folgt aus:

    lpD3DDevice->SetVertexShader(D3DFVF_XYZ);
        lpD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST,1,&vertex[0],sizeof(D3DVERTEX) );
    

    Und dort werden jetzt folgende Fehler generiert (ohne static funktioniert es):

    C:\CMEngine.cpp(489) : error C2227: Der linke Teil von '->SetVertexShader' muss auf Klasse/Struktur/Union zeigen
    C\CMEngine.cpp(490) : error C2227: Der linke Teil von '->DrawPrimitiveUP' muss auf Klasse/Struktur/Union zeigen
    C\CMEngine.cpp(490) : error C2597: Ungueltige Referenz auf ein Datenelement 'CMTriangle::vertex' in einer statischen Member-Funktion
    C\CMEngine.cpp(490) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp
    C:\CMEngine.cpp(490) : error C2102: '&' erwartet L-Wert
    C\CMEngine.cpp(505) : error C2660: 'RegisterObject' : Funktion akzeptiert keine


Anmelden zum Antworten