Сделал прототип для класса 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...., то ошибки пропадают, код компилится и прога пашет.
Может кто-либо сказать что инбудь по этому поводу?
И не ругайтесь на жуткий говнокод - я и так это знаю)