конструктор для моего движка создает аудио, видео и объекты ввода с указателем на себя (это). Однако, когда я отлаживаю, я вижу, что все классы, которые я построил enginePtr, не совпадают с значением, предоставленным отладчиком.этот указатель, заданный Object (this)! = This
Когда я заглядываю внутрь, я вижу, например, enginePtr pRender имеет разные значения, чем двигатель. Для большинства из них установлено значение NULL, что приводит к сбою рендеринга.
Вот мой двигатель конструктор:
cEngine::cEngine(int flag) {
if (!al_get_system_driver()) {
this->isRunning = true;
al_init();
// Uses DirectX by default, uncomment ALLEGRO_OPENGL for OpenGL.
if (flag == OPENGL_WINDOW || flag == OPENGL) al_set_new_display_flags(ALLEGRO_RESIZABLE | ALLEGRO_OPENGL);
else if (flag == DIRECTX_WINDOW || flag == DIRECTX) al_set_new_display_flags(ALLEGRO_RESIZABLE);
else if (flag == OPENGL_FULLSCREEN) al_set_new_display_flags(ALLEGRO_FULLSCREEN | ALLEGRO_OPENGL);
else if (flag == DIRECTX_FULLSCREEN) al_set_new_display_flags(ALLEGRO_FULLSCREEN);
this->display = createDisplay("Motherload C++", -1, -1, 640, 480);
srand((unsigned) time(0));
pCam = new cCam(this);
pIO = new cIO(this);
pMap = new cMap(this, setPoint(50, 50), setPoint(13, 20)); // 13, 20
pPlayer = new cPlayer(this);
pAudio = new cAudio(this);
pRender = new cRender(this);
pEvents = new cEvents(this);
}
}
cRender конструктор:
cRender::cRender(cEngine* pEngine) {
this->pPlayerLoc = pPlayerLoc;
this->BLACK = al_map_rgb(30, 100, 200);
this->needsRedraw = false;
this->pEngine = pEngine;
al_init_font_addon();
al_init_ttf_addon();
splitImages();
//this->font = al_load_font("C:/resource/gisha.ttf", 24, 0);
//this->img = al_load_bitmap("C:/resource/rock.png");
}
Благодаря
Нет ничего принципиально неправильного в том, что вы пытаетесь ... должно быть небольшой деталью реализации. Можете ли вы показать нам конструктор одного из этих классов (cCam, CIO, cAudio или что-то еще?) –
@Tony см. Править выше – jmasterx
Это тоже не должно компилироваться: 'pReander = new cRender ((this);' is Синтаксически несовместимо. – dreamlax