我在當前的代碼庫中遇到了一個小問題。我試圖實例化類ShockRenderSystem的一個新的std :: shared_ptr。 ShockRenderSystem的構造函數需要使用類ShockGame的std :: shared_ptr,以及在這種情況下不相關的sf :: VideoMode。這裏是我想要做的代碼(m_render_system是一個std :: shared_ptr的):將其轉換爲std :: shared_ptr
m_render_system = std::shared_ptr<ShockRenderSystem>(new ShockRenderSystem((static_cast<std::shared_ptr<ShockGame> >(this)), mode));
我想投this
到一個std :: shared_ptr的,我可以傳遞到構造函數。注意這段代碼位於ShockGame的構造函數中。
,我發現了錯誤:no matching function for call to 'SE::ShockRenderSystem::ShockRenderSystem(std::shared_ptr<SE::ShockGame>*, sf::VideoMode&)' candidate is: SE::ShockRenderSystem::ShockRenderSystem(std::shared_ptr<ShockGame>, sf::VideoMode)
感謝任何及所有的幫助!
使用['std :: enable_shared_from_this'](http://en.cppreference.com/w/cpp/memory/enable_shared_from_this) – sehe
您不能只帶任何舊指針並將其轉換爲智能指針。也就是說,我沒有看到編譯器看到的_syntax_問題。你沒有傳遞'std :: shared_ptr *'。 –
你爲什麼要用一個共享指針來構造一個對象呢? –