Boost C++ 库

...世界上最受尊敬和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码标准

PrevUpHomeNext

可追踪类

boost::signals2::trackable — 旨在简化从原始 Boost.Signals 库中使用 boost::signals::trackable 类的代码的移植。

概要

// In header: <boost/signals2/trackable.hpp>


class trackable {
public:
  // construct/copy/destruct
  trackable();
  trackable(const trackable&);
  trackable& operator=(const trackable&);
  ~trackable();
};

描述

不建议在新代码中使用 trackable 类。 trackable 类不是线程安全的,因为 trackable 对象会在 trackable 析构函数中断开其关联的连接。由于 trackable 析构函数要等到任何派生类的析构函数完成后才会运行,因此会留出一个窗口,在该窗口中,部分析构的对象仍然可能具有活动连接。

使用 Boost.Signals2 进行自动连接管理的首选方法是使用 shared_ptr 管理被追踪对象的生命周期,并使用 signals2::slot::track 方法来追踪它们的生命周期。

当槽中绑定的对象(通过指针或引用)被销毁时,trackable 类提供信号和槽的自动断开。trackable 类只能用作其他类的公共基类;当这样使用时,该类可以绑定到用作槽一部分的函数对象。trackable 对象追踪其所属的信号-槽连接集的方式是未指定的。

trackable 的实际使用取决于是否存在适用于任何可能包含指向可追踪对象的指针或引用的类型的适当 visit_each 重载。

trackable 公共构造/复制/析构

  1. trackable();

    效果

    将已连接槽的列表设置为空。

    抛出

    不会抛出。

  2. trackable(const trackable& other);

    效果

    将已连接槽的列表设置为空。

    抛出

    不会抛出。

    理由

    信号-槽连接只能通过显式的 connect 方法调用来创建,因此在复制可追踪对象时无法在此处创建。

  3. trackable& operator=(const trackable& other);

    效果

    将已连接槽的列表设置为空。

    返回值

    *this

    抛出

    不会抛出。

    理由

    信号-槽连接只能通过显式的 connect 方法调用来创建,因此在复制可追踪对象时无法在此处创建。

  4. ~trackable();

    效果

    断开所有包含指向此可追踪对象的指针或引用,并且可以通过 visit_each 找到的信号/槽连接。


PrevUpHomeNext