Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 21.05.2011, 16:30   #1
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Корявый класс:

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

И не ругайтесь на жуткий говнокод - я и так это знаю)
(Offline)
 
Ответить с цитированием
Старый 21.05.2011, 16:47   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Корявый класс:

по ходу у тебя TCell объявлен раньше чем TGround, но позже чем прототип TGround.
(Offline)
 
Ответить с цитированием
Старый 22.05.2011, 10:29   #3
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Корявый класс:

Да, проблема оказалась именно в этом...Забыл, как классы в С пишутся
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:41.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com