Pointer Problem



  • Hallo zusammen,

    ich habe ein kleines Problem mit Pointern.
    Ich bekomme folgende Fehlermeldung:

    error: no matching function for call to `testApp::makeComplexBody(b2Body*&, std::vector<ofxTriangleData, std::allocator<ofxTriangleData> >&)'
    note: candidates are: void testApp::makeComplexBody(b2Body*, std::vector<ofxTriangleData*, std::allocator<ofxTriangleData*> >)
    

    Deklararion sieht so aus:

    void makeComplexBody(b2Body* body, vector <ofxTriangleData*> triangles);
    

    Aufruf so:

    makeComplexBody(body, tri.triangles);
    

    Die Funktion scheint vollkommen okay,
    ich habe das mal debugged um zu sehen was in den variablen tri & body steht, das sieht dann so aus:
    http://www.imghoster.net/bild.php/2,2077,triPD7QR.jpg

    In der Fehlermeldung verwirrt mich das b2Body*&

    Wieso * und &?

    Hat jemand vielleicht ne Lösung?

    Danke,
    Snoogie



  • Das Bild mit ein wenig Code ist hier:
    http://www.imghoster.net/bild.php/2077,triPD7QR.jpg

    Hier kann man auch den Inhalt der variablen sehen



  • Die Funktion erwartet einen vector<ofxTriangleData*>, du übergibst aber einen vector<ofxTriangleData>.
    Ist es eigentlich Absicht, dass bei der Übergabe eine Kopie des Vektors erzeugt wird?



  • Hey,
    danke für die schnelle Antwort.
    Ich habe keine Ahnung ehrlich gesagt.
    Da ich gerade erst mit C++ angefangen habe, was muss ich den ändern, damit ich vector<ofxTriangleData*> übergebe und nicht vector<ofxTriangleData>?



  • Du musst tri.triangles als vector<ofxTriangleData*> deklarieren und deinen Code entsprechend anpassen oder du deklarierst deine Funktion anders
    so z.Bsp.

    void makeComplexBody(b2Body* body, vector<ofxTriangleData>& triangles);
    

Anmelden zum Antworten