【发布时间】:2014-01-06 00:00:37
【问题描述】:
我在当前的代码库中遇到了一个小问题。我正在尝试实例化 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)
感谢您的所有帮助!
【问题讨论】:
-
您不能只使用任何旧指针并将其转换为智能指针。也就是说,我在这里没有看到编译器看到的 syntax 问题。你没有传递
std::shared_ptr<SE::ShockGame>*。 -
为什么要构造一个带有指向自身的共享指针的对象?!
-
我不是。我正在尝试将共享指针传递给另一个类。基本上,我只是想将这个(指向 ShockGame)转换为 std::shared_ptr
以传递给构造函数 ShockRenderSystem。
标签: c++ pointers memory this smart-pointers