enable_shared_from_this. Класс наследует этот шаблон и вызывает.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpUpEs 356 of 696 menu
◀ ▶

Общий указатель из объекта в C++

Общий указатель на тот же объект без второго блока управления позволяет вернуть enable_shared_from_this.

Класс наследует этот шаблон и вызывает shared_from_this только если уже управляется shared_ptr. Запишем узел со счетчиком и вернем копию указателя из метода:

#include <iostream> #include <memory> class Node : public std::enable_shared_from_this<Node> { public: int tag = 0; std::shared_ptr<Node> link() { return shared_from_this(); } }; int main() { std::shared_ptr<Node> head = std::make_shared<Node>(); head->tag = 5; std::shared_ptr<Node> mirror = head->link(); std::cout << mirror->tag << "\n"; return 0; }

Сделайте класс Cell с enable_shared_from_this и полем id. Метод self возвращает shared_ptr<Cell>. Создайте объект через make_shared, получите второй shared_ptr из self и выведите id.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить