我有一个View类的实例(使用shared_ptr在Controller拥有对象的某处实例化)
class View {
...
public:
std::shared_ptr<UIView> hitTest(cocos2d::Vec2 point, cocos2d::Event * event) {
...
};
此视图还有方法“hitTest()”,该方法应将此视图的shared_ptr返回到外部世界
hitTest() {
...
return make_shared<View>(this);
}
如何在View中实现此方法?它应该将此VC的shared_ptr返回到外部? 显然,我不能 make_shared(this)
dataframe = pandas.DataFrame(data.foo.tolist())
因为它会彻底破坏逻辑:它只会从这个原始指针创建另一个智能指针(这与所有者的shared_ptr完全无关) 那么视图如何知道其外部的shared_ptr并从实例内部返回呢?
答案 0 :(得分:3)
正如@Mohamad Elghawi正确指出的那样,你的课程必须来自std::enable_shared_from_this
。
#include <memory>
struct Shared : public std::enable_shared_from_this<Shared>
{
std::shared_ptr<Shared> getPtr()
{
return shared_from_this();
}
};
只是为了完全回答这些问题,因为仅链接的答案是不受欢迎的。