BASIC

Author Topic: Methode mit konstantem Parameter  (Read 1395 times)

Offline backslider

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 892
    • View Profile
Methode mit konstantem Parameter
« on: 2010-Dec-12 »
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ß

Offline backslider

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 892
    • View Profile
Re: Methode mit konstantem Parameter
« Reply #1 on: 2010-Dec-13 »
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...

Offline backslider

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 892
    • View Profile
Re: Methode mit konstantem Parameter
« Reply #2 on: 2010-Dec-13 »
Das hatte ich auch vermutet, allerdings gehts auch nicht, wenn ich sie als const deklariere. :(
Vielleicht hat ja noch wer ne Idee.

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10713
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Re: Methode mit konstantem Parameter
« Reply #3 on: 2010-Dec-13 »
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
 

Offline backslider

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 892
    • View Profile
Re: Methode mit konstantem Parameter
« Reply #4 on: 2010-Dec-13 »
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;
}
 
« Last Edit: 2010-Dec-14 by backslider »