Methode mit konstantem Parameter

Previous topic - Next topic

backslider

Hi Leute,

ich habe ein Problem beim Wrappen.
Und zwar habe ich z.B. die Methode
Code (glbasic) Select
void setWorldLimits(const Vector2& min, const Vector2& max);
Welche ich mit dieser Funktion wrappen möchte
Code (glbasic) Select

void JP_SetWorldLimits(float minX, float minY, float maxX, float maxY){
     Vector2* vecX = new Vector2(minX, minY);
     Vector2* vecY = new Vector2(maxX, maxY);
     world->setWorldLimits(vecX, vecY);
}

...Mein Problem ist, dass ich immer die Meldung kriege, dass die Methode so nicht vorhanden ist und ich finde einfach nicht heraus, wieso ich das so nicht kompilieren kann. :(
Kann mir jemand ne Lösung mit Erklärung nennen?
Es liegt auf jedenfall irgendwie an dem "const Vector2&" im Parameter, richtig?

Gruß

backslider

Die erste Methode ist in der World.h als Methode definiert und hat in der World.cpp ihre "Funktion" zugewiesen bekommen.
Habe ich da was mit den Pointern falsch verstanden?
Mit den anderen Methoden funktionierts ja auch... Eben nur nicht bei denen, wo ich nen Vector2 mit übergeben muss...

backslider

Das hatte ich auch vermutet, allerdings gehts auch nicht, wenn ich sie als const deklariere. :(
Vielleicht hat ja noch wer ne Idee.

Kitty Hello

void JP_SetWorldLimits(float minX, float minY, float maxX, float maxY){
     Vector2* vecX = new Vector2(minX, minY);
     Vector2* vecY = new Vector2(maxX, maxY);
     world->setWorldLimits(vecX, vecY);
}

ok.
Code (glbasic) Select

FUNCTION SETWL: xmin, xmax, ymin, ymax
INLINE
Vector2 va(xmin, ymin), vb(xmax, ymax); // must be a real object, not a pointer pointing into the void
world->setWL(&va, &vb);
ENDINLINE


backslider

#4
Ich meine, so hatte  ich das auch probiert und dann beim Vector2 Konstruktor 'nen Fehler.
Da ich aber nicht ganz sicher bin, probier ichs nachher nochmal aus und melde mich dann nochmal.

Dann erstmal vielen Dank!

LG

EDIT:
So, das Problem mit den Vektoren habe ich jetzt hinbekommen.
Sieht das hier nach einer guten Lösung aus, oder kann man das noch verkürzen? den Parameter "world" bekomme ich nicht direkt geparst (also z.B.: (World*)world->setWorldLimits(min, max); )
Code (glbasic) Select

void setworldlimits(unsigned int world, float minX, float minY, float maxX, float maxY){
     Vector2 min = Vector2::Vector2(minX, minY);
     Vector2 max = Vector2::Vector2(maxX, maxY);
     World* w = (World*)world;
     w->setWorldLimits(min, max);
     world = (unsigned int)w;
}