Как определить объект отдельного класса в другом классе

Рейтинг: 0Ответов: 0Опубликовано: 26.07.2025

Я новичок в 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, так и остаётся)

Помогите пожалуйста понять что не так.

Ответы

Ответов пока нет.