Je suis bidouiller à mon code en essayant de tourner dans une certaine demi-décent code C++ 0x utilisant GCC 4.5 ..shared_ptr retourner une interface
shared_ptr<IEngineLayer*> createEngineLayer(void)
{
try
{
CEngineLayer* engine = new CEngineLayer;
IEngineLayer* interface = dynamic_cast<IEngineLayer*>(engine);
return shared_ptr<IEngineLayer*>(interface);
}
catch(std::bad_alloc&)
{
// Unable to allocate enough memory for the engine layer.
return shared_ptr<IEngineLayer*>();
}
}
et je reçois ce ..
shared_ptr_base.h:545:65: error: cannot convert ‘DEngine::IEngineLayer*’ to ‘DEngine::IEngineLayer**’ in initialization
Comment puis-je résoudre ce problème?
(également, comme une note de côté, va shared_ptr détruire l'interface et le CEngineLayer quand personne ne l'utilise plus?)
Merci, je suivais un peu le long des lignes d'autres conteneurs de MST comme vecteur