所以我劈砍而去,在我的代码试图把它使用GCC 4.5的一些半体面的C++ 0x代码..的shared_ptr返回一个接口
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*>();
}
}
而且我得到这个..
shared_ptr_base.h:545:65: error: cannot convert ‘DEngine::IEngineLayer*’ to ‘DEngine::IEngineLayer**’ in initialization
我该如何解决这个问题?
(此外,作为一个侧面说明,将shared_ptr的破坏两者的界面,当没有人再使用它的CEngineLayer?)
谢谢,有点沿其他STD容器的像载体