将其转换为std :: shared_ptr

时间:2014-01-06 00:00:37

标签: c++ pointers memory this smart-pointers

我在当前的代码库中遇到了一个小问题。我正在尝试实例化ShockRenderSystem类的新std :: shared_ptr。 ShockRenderSystem的构造函数采用类ShockGame的std :: shared_ptr,以及在这种情况下不相关的sf :: VideoMode。这是我要做的代码(m_render_system是一个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 个答案:

答案 0 :(得分:2)

std::enable_shared_from_this获取ShockGame

答案 1 :(得分:0)

对于来到此线程的任何人,请记住将您的 this 指针替换为 shared_from_this()