Ich habe eine Instanz von View-Klasse (instanziiert irgendwo im Controller besitzt Objekt mit shared_ptr)wie shared_ptr zum aktuellen Objekt zurück aus dem Innern der „dieser“ Objekt selbst
class ViewController {
protected:
std::shared_ptr<View> view_;
};
Diese Ansicht hat auch Verfahren „hitTest()“das sollte Bringe diese shared_ptr Sicht nach außen
class View {
...
public:
std::shared_ptr<UIView> hitTest(cocos2d::Vec2 point, cocos2d::Event * event) {
...
};
Wie kann ich diese Methode implementieren, aus dem Inneren des view? Es sollte die shared_ptr dieses VC nach draußen zurückgeben? So wäre es nur ein weiteres Smart-Pointer aus dem dieser Rohzeiger erstellen (das wäre völlig unabhängig sein Besitzer shared_ptr) : Natürlich, ich nicht make_shared (diese)
hitTest() {
...
return make_shared<View>(this);
}
, weil sie brechen würde vollständig die Logik Wie kann die Ansicht die shared_ptr von extern erkennen und sie aus der Instanz zurückgeben?
Gemeinsame und einzigartige Zeiger befassen sich in der Regel mit Eigentum. Wie kann eine Instanz für sich selbst sein? – ibre5041
Ich glaube, Sie suchen nach [std :: enable_shared_from_this] (http://en.cppreference.com/w/cpp/memory/enable_shared_from_this) –
Haben Sie ['std :: enable_shared_from_this'] gesehen (http: // en.cppreference.com/w/cpp/memory/enable_shared_from_this)? – Angew