![]() |
Корявый класс:
Сделал прототип для класса TGround, потом объявил глобальный указатель на этот тип . вот код:
class TGround; TGround * WORLD; после этого идет инклуд файла ground.cpp в функции WinMain пишу: WORLD = new TGround; WORLD->Create(1,1,1); Все работает, удаляется он тоже хорошо. Все функции короче работают. В файле ground.cpp описываются структуры: struct TCell { ... void Rebuild() { int g=WORLD->GetCube(0,0,0,0,0,0); } }; struct TChunk { ... }; В классе TGround есть метод: int GetCube(UINT cx,UINT cy,UINT cz,int lx,int ly,int lz) { if(!(cx<width&&cy<height&&cz<depth)) return 0; if(lx>=0&&lx<16 && ly>=0&&ly<16 && lz>=0&&lz<16) { TChunk c= this->world[lx+ly*width+lz*width*height]; TCell cell=c.CELLS[lx][ly][lz]; if(cell.EXISTS) return 1;//&cell; return 0; } return 0; } из метода rebuild класса TCell он вызывается так: int d=WORLD->GetCube(0,0,0,0,0,0); В итоге получаю следующую дурь от компилятора: error: invalid use of undefined type `struct TGround error: invalid use of undefined type `struct TGround' - этот на строчке объявления прототипа класса TGround если убрать строчку int d = WORLD->GetCube...., то ошибки пропадают, код компилится и прога пашет. Может кто-либо сказать что инбудь по этому поводу? |
Ответ: Корявый класс:
по ходу у тебя TCell объявлен раньше чем TGround, но позже чем прототип TGround.
|
Ответ: Корявый класс:
Да, проблема оказалась именно в этом...Забыл, как классы в С пишутся :(
|
Часовой пояс GMT +4, время: 05:29. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot