Witam!
Jest to mój pierwszy post tutaj, więc proszę o wyrozumiałość.
Otóż chcę napisać grę bazującą na bibliotekach Box2D i Allegro5.
Problem pojawił się, gdy stworzyłem klasę Obiekt i konstruktor tej klasy, mianowicie gdy w konstruktorze stworzyłem obiekt klasy b2Body i chciałem wywołać go w mainie to powstawały błędy.
Szukałem w googlach długo, próbowałem ze operatorami "::" i ":" ale to nic nie dawało.
Zapewne problem jest banalny ale dawno nie pisałem w c++ i dopiero się uczę objektówki.
Obiekty.h
#include <Box2D/Box2D.h>
#ifndef obiekty_h
#define obiekty_h
class Obiekt{
public:
float x, y, rozx, rozy, ad, gs, d, f, a;
bool act;
Obiekt(float, float, float, float, float, float, float, float, float, bool);
};
#endif // obiekty_h
Obiekty.cpp
#include <Box2D/Box2D.h>
#include "obiekty.h"
b2Vec2 gravity(0.0f, 10.0f);
b2World world( gravity );
Obiekt::Obiekt(float _x, float _y, float _rozx, float _rozy, float _ad, float _gs,
float _d, float _f, float _a, bool _act){
x = _x;
y = _y;
rozx = _rozx;
rozy = _rozy;
ad = _ad;
gs = _gs;
d = _d;
f = _f;
a = _a;
act = _act;
b2BodyDef obj;
obj.type = b2_dynamicBody;
obj.position.Set(x, y);
obj.angularDamping = ad;
obj.gravityScale = gs;
obj.angle = a * b2_pi;
obj.active = act;
b2Body *Obj = world.CreateBody(&obj); //to chce "wyciągnąć"
b2PolygonShape shape;
shape.SetAsBox(rozx, rozy);
b2FixtureDef fix;
fix.shape = &shape;
fix.density = d;
fix.friction = f;
Obj->CreateFixture(&fix);
}
main.cpp (fragment)
while( !al_key_down( &kl, ALLEGRO_KEY_ESCAPE ) ){
al_get_keyboard_state( &kl );
b2Vec2 pos = Obj::Objekt()->GetPosition(); //tu jest błąd!
float rot = Obj->GetAngle(); //tu też!
al_flip_display();
world.Step(1.0f/60.0f, 8, 1);
}
Z góry dziękuje za pomoc.
Sengi