Page 1 of 1

Can't create Irrlicht Renderer

Posted: Wed Jun 16, 2010 13:56
by rtr_18
Hi!
I've compiled CEGUI with Irrlicht Engine. My first project shows the following error.


main.cpp(18) : error C2664: 'CEGUI::IrrlichtRenderer::IrrlichtRenderer(irr::IrrlichtDevice &)' : cannot convert parameter 1 from 'irr::IrrlichtDevice *' to 'irr::IrrlichtDevice &'

Code: Select all

#include "irrlicht.h"
#include "CEGUI.h"
#include "CEGUIIrrlichtRenderer.h"
#include "CEGUIWindowManager.h"

using namespace CEGUI;
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
//using namespace gui;

int main ()
{
 IrrlichtDevice* device = createDevice(EDT_SOFTWARE, core::dimension2d<u32>(800, 600), 16, false);
 //IrrlichtDevice& dev = device;
 CEGUI::IrrlichtRenderer& myRenderer = new IrrlichtRenderer(device);
 CEGUI::System::create(myRenderer);
 IVideoDriver* driver = device->getVideoDriver();
 driver->beginScene(true, true, SColor(255, 255, 0, 0));
 ISceneManager* smgr = device->getSceneManager();
 WindowManager* wmgr = WindowManager::getSingletonPtr();
 Window* myRoot = wmgr->createWindow(CEGUI::String("Default Window"), CEGUI::String("root"));
 System::getSingleton().setGUISheet(myRoot);
 while(device->run() && driver)
 {
  if(device->isWindowActive())
  {
  smgr->drawAll();
  CEGUI::System::getSingleton().renderGUI();
  driver->endScene();
  }
 }
 device->drop();
 return 0;
}


irr::createDevice() returns only a pointer. But CEGUI::IrrlichtRenderer() expects a reference. What to do to resolve this error?

Re: Can't create Irrlicht Renderer

Posted: Wed Jun 16, 2010 17:23
by Jamarr
rtr_18 wrote:main.cpp(18) : error C2664: 'CEGUI::IrrlichtRenderer::IrrlichtRenderer(irr::IrrlichtDevice &)' : cannot convert parameter 1 from 'irr::IrrlichtDevice *' to 'irr::IrrlichtDevice &'

irr::createDevice() returns only a pointer. But CEGUI::IrrlichtRenderer() expects a reference. What to do to resolve this error?


This is not CEGUI issue, so I am not sure why you are asking it here. Simply googling "C2664" would have given you the answer. Take some time to research an issue yourself before asking others to do it for you. Anyway, you can find a more in-depth answer here: http://www.cplusplus.com/doc/tutorial/pointers/

Re: Can't create Irrlicht Renderer

Posted: Thu Jun 17, 2010 04:01
by agamemnus
Try this instead:

extern IrrlichtDevice *device;

...

CEGUI::IrrlichtRenderer &CEGUIRenderer = CEGUI::IrrlichtRenderer::bootstrapSystem (*device);