Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

enable_shared_from_this

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

enable_shared_from_this

Purpose

Заголовок<<boost/enable_shared_from_this.hpp>>определяет шаблон класса<enable_shared_from_this>. Он используется в качестве базового класса, который позволяет получитьshared_ptrилиweak_ptrк текущему объекту из функции члена.

<enable_shared_from_this<T>>определяет две членские функции, называемые<shared_from_this>, которые возвращают<shared_ptr<T>>и<shared_ptr<T const>>, в зависимости от константы, к<this>. Он также определяет две функции-члена, называемые<weak_from_this>, которые возвращают соответствующую<weak_ptr>.

Example

#include <boost/enable_shared_from_this.hpp>
#include <boost/shared_ptr.hpp>
#include <cassert>
class Y: public boost::enable_shared_from_this<Y>
{
public:
    boost::shared_ptr<Y> f()
    {
        return shared_from_this();
    }
};
int main()
{
    boost::shared_ptr<Y> p(new Y);
    boost::shared_ptr<Y> q = p->f();
    assert(p == q);
    assert(!(p < q || q < p)); // p and q must share ownership
}

Synopsis

namespace boost
{
template<class T> class enable_shared_from_this
{
public:
    shared_ptr<T> shared_from_this();
    shared_ptr<T const> shared_from_this() const;
    weak_ptr<T> weak_from_this() noexcept;
    weak_ptr<T const> weak_from_this() const noexcept;
}
}

template<class T> shared_ptr<T> enable_shared_from_this<T>::shared_from_this();

template<class T> shared_ptr<T const> enable_shared_from_this<T>::shared_from_this() const;

Требует:<enable_shared_from_this<T>>должен быть доступным базовым классом<T>.<*this>должен быть подобъектом экземпляра<t>типа<T>.

Возвращение:Если<shared_ptr>экземпляр<p>, которымвладеет<t>, существует<shared_ptr<T>>экземпляр<r>, который разделяет собственность с<p>.

Пост-условия:<r.get() == this>.

Бросает:<bad_weak_ptr>, когда нет<shared_ptr><*this>.

template<class T> weak_ptr<T> enable_shared_from_this<T>::weak_from_this() noexcept;

template<class T> weak_ptr<T const> enable_shared_from_this<T>::weak_from_this() const noexcept;

Требует:<enable_shared_from_this<T>>должен быть доступным базовым классом<T>.<*this>должен быть подобъектом экземпляра<t>типа<T>.

Возврат:Если<shared_ptr>экземпляр<p>, которымвладеет<t>, существует или существовал в прошлом,<weak_ptr<T>>экземпляр<r>, который разделяет собственность с<p>. В противном случае пустой<weak_ptr>.


<маленький>Копирайт © 2002, 2003, 2015 от Питера Димова. Distributed under the Boost Software License, Version 1.0. См. сопроводительный файл LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.[ORIG_END] -->

Статья enable_shared_from_this раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 08:35:30/0.0073478221893311/1