所以我劈砍而去,在我的代碼試圖把它使用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容器的像載體