2014-01-06 100 views
1

我在當前的代碼庫中遇到了一個小問題。我試圖實例化類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)

感謝任何及所有的幫助!

+2

使用['std :: enable_shared_from_this'](http://en.cppreference.com/w/cpp/memory/enable_shared_from_this) – sehe

+0

您不能只帶任何舊指針並將其轉換爲智能指針。也就是說,我沒有看到編譯器看到的_syntax_問題。你沒有傳遞'std :: shared_ptr *'。 –

+0

你爲什麼要用一個共享指針來構造一個對象呢? –

回答