Я новичок в использовании классов и объектно-ориентированной части 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.hi я включил shape.h и определил экземпляры класса с помощью
//Create shapes
shape O, T, S, L, R, Z, I;
. У меня также есть отдельные файлы для каждой формы, такие как I.cpp для каждой. shape будет иметь другой код для загрузки изображения для его цвета блока в цвет 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. of:
error: expected initializer before '.' token
Я совершенно не понимаю, что это означает, и не смог найти ничего полезного при поиске в Google этого кода ошибки, поэтому любая помощь будет принята с благодарностью.