Этого вопроса является продолжение вопросом этого вопроса здесь: original questionСамого содержащего shared_ptr из себя, что наследуется от станда :: enable_shared_from_this
У меня есть класс, который наследуется от std::enable_shared_from_this
и этого класса содержит std::shared_ptr<Self>
В любом из конструкторов этого класса после того, как я узнаю, что детали класса полны и успешны, как я могу назначить сохраненный std::shared_ptr<Self>
как номер shared this
?
Пример:
class Self : public std::enable_shared_from_this<Self> {
private:
std::shared_ptr<Self> me_; // Or
std::unique_ptr>Self> me_;
public:
Self (/*some parameters*/);
};
Self::Self(/* some parameters */) {
// Check parameters for creation
// Some work or initialization being done
// If all is successful and construction of this class is about
// to leave scope, then set the smart pointer to the this*
// How to do ...
me_ = std::enable_shared_from_this<Self>::shared_from_this();
// Properly if this is even possible at all.
}
@ Jason R oh okay then. Поэтому мне потребовалось бы иметь «класс типа менеджера», который содержит экземпляры, или мне нужно будет установить его в функции, которая будет вызываться сразу после его конструктора, например, в функции конструктора или инициализации. –
a shared_ptr to self - оксюморон. полезно только для временного хранения объекта в живых (например, при ожидании обратного вызова). –