Как определить объект отдельного класса в другом классе
Я новичок в c++, и в программировании в целом.Я пытался написать код для простенькой 2d игры, используя движок irrlicht.Столкнулся с этой проблемой и никак не могу понять в чем здесь проблема...
Вобщем допустим у нас есть 2 отдельных класса Vec2 и Rect:
#include <iostream>
using namespace std;
class Vec2
{
public:
int x,y;
Vec2(){};
Vec2(int x,int y)
{
this->x = x;
this->y = y;
}
};
class Rect
{
int x,y,w,h;
public:
Rect(){};
Rect(Vec2 &vect,int w, int h)
{
x = vect.x;
y = vect.y;
this->w = w;
this->h = h;
}
void info()
{
cout << x << endl;
cout << y << endl;
cout << w << endl;
cout << h << endl;
}
};
Тоесть это просто пример 2d вектора который хранит x, y, а Rect это как бы прямоугольник, который будет отрисовываться, допустим как игрок и т.д.
Затем я определяю классы Renderer, GameObject:
class Renderer
{
public:
Renderer(){};
void drawRect(Rect *r)
{
r->info();
}
};
class GameObject
{
int x,y,w = 30,h = 40;
Vec2 vec;
Rect obj_rect;
public:
GameObject(int sx,int sy) : vec(sx,sy), obj_rect(sx,sy,w,h)
{
x = sx;
y = sy;
};
void update()
{
}
void draw(Renderer *rnd)
{
rnd->drawRect(&obj_rect);
}
};
И далее main:
int main ()
{
Renderer renderer;
GameObject player(5,7);
player.update();
player.draw(&renderer);
return 0;
}
Вроде бы все работает(в данном случае метод drawRect просто выводит x,y, weigh, height в консоль), но когда я пытаюсь в методе update класса GameObject изменить какую нибудь переменную( допустим x++ )
void update()
{
x++;
}
то в методе drawRect эти значения не меняются(тоесть x объекта player как была 5, так и остаётся)
Помогите пожалуйста понять что не так.