Я довольно плохо знаком с использованием классов и объектно-ориентированной стороны C ++ и получаю сообщение об ошибке в заголовке.
Я пишу игру в тетрис с использованием SDL.
У меня есть определение класса в shape.h
class shape
{
public:
SDL_Surface *colour;
int rotation1[4][4];
int rotation2[4][4];
int rotation3[4][4];
int rotation4[4][4];
bool load();
void move();
shape();
};
и в main.h я включил shape.h и определил экземпляры класса с помощью
//Create shapes
shape O, T, S, L, R, Z, I;
У меня также есть отдельные файлы для каждой фигуры, например I.cpp, поскольку каждая фигура будет иметь разный код для загрузки изображения для его цвета блока в цвет SDL_Surface и для различных массивов различных поворотов блока, поэтому я разделил это в один файл для каждого блока.
В I.cpp я включил main.h и попытался настроить функцию загрузки для I следующим образом:
bool I.load()
{
//if loading the cyan square texture fails
if ((I.colour = surface::onLoad("../Textures/cyanSquare.png")) == NULL)
{
//print error
cout << "Unable to load cyanSquare.png";
//return fail
return false;
}
I.rotation1 = {{7,7,7,7},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}};
I.rotation2 = {{0,0,7,0},
{0,0,7,0},
{0,0,7,0},
{0,0,7,0}};
I.rotation3 = {{7,7,7,7},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}};
I.rotation4 = {{0,0,7,0},
{0,0,7,0},
{0,0,7,0},
{0,0,7,0}};
return true;
}
Когда я пытаюсь скомпилировать это (используя GCC), он сообщает об ошибке в строке 3 I.cpp:
error: expected initializer before '.' token
Я понятия не имею, что это значит, и не смог найти ничего полезного в поиске Google по этому коду ошибки, поэтому любая помощь будет принята.