Я работаю над воссозданием pong, и при перемещении функции drawPaddle из основного класса Game в класс Paddle я столкнулся с проблемой, когда функция не могла прочитать переменные-члены (даже если они находятся в том же классе). Класс находится в файле заголовка, а определения функций - в файле cpp. Рассматриваемые переменные: высота, ширина, xPos и yPos.
Класс Paddle
#include "Graphics.h"
class Paddle
{
public:
void setX(int z)
{
xPos = z;
}
int getX()
{
return xPos;
}
void setY(int z)
{
yPos = z;
}
int getY()
{
return yPos;
}
int getWidth() {
return width;
}
void setHeight(int z)
{
height = z;
}
int getHeight()
{
return height;
}
void setPlayer(bool z)
{
player = z;
}
bool getPlayer()
{
return player;
}
private:
//functions
void drawPaddle(Graphics& gfx);
void updatePaddle(Graphics& gfx);
//variables
int xPos;
int yPos = Graphics::ScreenHeight / 2 - Paddle::height / 2;
bool player;
static constexpr int width = 20;
int height = 100;
};
функция drawPaddle
#include "Paddle.h"
#include "Graphics.h"
void drawPaddle(Graphics gfx)
{
for (int i = 0; i < width; i++)
{
for (int j = 0; j < Paddle::height; j++)
{
gfx.PutPixel(p.getX() + i, p.getY() + j, Colors::White);
}
}
}
Как видите, я пробовал доступ к нему с помощью необработанной переменной (сообщает мне, что переменная не определена), через класс (сообщает мне, что переменная недоступна) и использование для нее геттера (не удалось, потому что он должен быть ссылкой на конкретный экземпляр c). Кто-нибудь знает, что я делаю не так? Спасибо.