Я знаю, что это было задано несколько раз, но ответы, похоже, не решают этого.C++ Включить защитные устройства
У меня есть два файла.
main.cpp
#include <irrlicht\irrlicht.h>
#include <vector>
#include <string>
#include <iostream>
#include "Scene.h"
#include "Camera.h"
#include "Gui.h"
irr::IrrlichtDevice* device;
irr::video::IVideoDriver* driver;
int main() {
device = irr::createDevice(irr::video::EDT_SOFTWARE, irr::core::dimension2d<irr::u32>(640, 480), 16, false, false, false, 0);
if (!device)
return 1;
device->setWindowCaption(L"NeoTrap");
driver = device->getVideoDriver();
sceneManager = device->getSceneManager();
GUIEnvironment = device->getGUIEnvironment();
//Testing
Mesh* ground = new Mesh();
//Testing
while (device->run()) {
driver->beginScene(true, true, irr::video::SColor(255, 120, 102, 136));
sceneManager->drawAll();
GUIEnvironment->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
Scene.h
#ifndef _SCENE_HEADER_
#define _SCENE_HEADER_
irr::scene::ISceneManager* sceneManager;
struct Mesh {
public:
Mesh();
private:
};
class Scene {
public:
Scene();
private:
};
#endif
То, что я пытаюсь сделать, это объявили переменную в Scene.h и определить его внутри главной функции. Я не уверен, что я не понимаю, включая охранников, но я получаю странные ошибки:
'irr': не является именем класса или пространства имен синтаксическая ошибка: отсутствует ';' перед '*' отсутствующий спецификатор типа - int. Примечание: C++ не поддерживает по умолчанию-ИНТ
, но когда я перехожу следующую строку обратно в main.cpp файл
irr::scene::ISceneManager* sceneManager;
программа компиляции. Когда я не могу объявить его в scene.h и установить значение из основной функции?
В какой файл 'определен IRR :: сцена :: ISceneManager'? – tmpearce
Scene.h, на самом верху. – Kurieita
Нет, это то, где вы объявляете переменную типа указатель-на-тот. Где этот ** тип ** (класс или структура) определен? – tmpearce