我有View類(控制器中的某個地方實例化使用的shared_ptr所屬對象)如何shared_ptr的從內返回當前對象的「本」對象本身
class ViewController {
protected:
std::shared_ptr<View> view_;
};
這種觀點也有方法「的一個實例,則hitTest ()「應該將此視圖的shared_ptr返回到外部世界
class View {
...
public:
std::shared_ptr<UIView> hitTest(cocos2d::Vec2 point, cocos2d::Event * event) {
...
};
如何從視圖內實現此方法?它應該將此VC的shared_ptr返回到外部? 很顯然,我不能 make_shared(本)
hitTest() {
...
return make_shared<View>(this);
}
,因爲這將徹底打破邏輯:它只是將創建從這些原始指針的另一個智能指針(這將是完全無關的所有者的shared_ptr) 所以視圖如何知道其外部的shared_ptr並將其從實例中返回?
共享和唯一指針通常處理所有權。自己擁有一個實例怎麼可能? – ibre5041
我想你可能正在尋找[std :: enable_shared_from_this](http://en.cppreference.com/w/cpp/memory/enable_shared_from_this) –
你見過['std :: enable_shared_from_this'](http:// en.cppreference.com/w/cpp/memory/enable_shared_from_this)? – Angew