그래서 나는 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를 모두 삭제합니까?)
감사를 삭제, 내가 좀 벡터