|  | 
|      | 
|  | 
| Frequently Asked QuestionsBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 32. Boost.Signals
  
   | ||||||||||||||||||||||
| 1. | Повышен. Сигналы активно поддерживаются. | 
| Нет. Пожалуйста, перейдите наBoost.Signals2. В документации Signals2 есть руководствопо портированию. | |
| 2. | Не означает ли некопируемая семантика сигнала, что класс с членом сигнала также будет некопируемым? | 
| Нет. Компилятор не сможет сгенерировать конструктора копий или оператора присваивания копий для вашего класса, если он имеет сигнал в качестве участника, но вы можете написать свой собственный конструктор копий и / или оператора присваивания копий. Только не пытайтесь скопировать сигнал. | |
| 3. | Повышен. Сигналы безопасны? | 
| Нет, с помощью Boost. Сигналы в многопоточной концепции очень опасны, и очень вероятно, что результаты будут менее удовлетворительными. Повышаю. Сигналы будут поддерживать безопасность потока в будущем. | |
| 4. | Как получить Boost Сигналы для работы с Qt? | 
| При построении с помощью Qt ключевые слова Moc< Для Qt 4.1 и позже, Это поведение может быть отключено в Qt на основе каждого проекта или файла с опцией< CONFIG += no_keywords # so Qt won't #define any non-all-caps `keywords' INCLUDEPATH += . /usr/local/include/boost-1_33_1/ macx:LIBS += /usr/local/lib/libboost_signals-1_33_1.a # ...your exact paths may vary Теперь вы можете смешать Boost. Сигналы и слоты Qt в одних и тех же файлах и даже в одном классе или функции. Вам придется использовать версии макросов Qt в своем собственном коде. Смотрите статьюБолее глубокий взгляд на сигналы и слоты[вне сайта] для более полных примеров и обзор сильных сторон двух систем. Более старые версии Qtне обеспечивали надежного механизма для предотвращения этих недружественных, все более низкие макросы, подобные ключевым словам. Хотя это проблема с Qt, а не Boost. По сигналам пользователь может использовать обе системы с небольшими дополнительными усилиями. Есть два способа сделать это: Первый способ включает в себя определение макроса< 
  namespace boost {
    namespace signals = BOOST_SIGNALS_NAMESPACE;
  }
Второй способ, предложенный Фрэнком Гессом и усовершенствованный Нильсом Деккером, предполагает создание заголовка< #ifndef SIGNALSLIB_HPP_INCLUDED
#define SIGNALSLIB_HPP_INCLUDED 
#if defined(signals) && defined(QOBJECTDEFS_H) && \
  !defined(QT_MOC_CPP)
#  undef signals
#  define signals signals
#endif
#include <boost/signal.hpp>
namespace boost
{
  namespace signalslib = signals;
}
#if defined(signals) && defined(QOBJECTDEFS_H) && \
  !defined(QT_MOC_CPP)
#  undef signals
// Restore the macro definition of "signals", as it was
// defined by Qt's <qobjectdefs.h>.
#  define signals protected
#endif
#endifИспользуйте этот заголовок, чтобы включить библиотеку Boost, а затем обратитесь к ней в пространстве имен< | 
Статья Frequently Asked Questions раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 32. Boost.Signals может быть полезна для разработчиков на c++ и boost.
:: Главная :: Chapter 32. Boost.Signals ::
| реклама |