При использовании Boost.Signals boost позволяет получить от boost::signals::trackable
, чтобы упростить управление жизненным циклом объекта/соединения (см. boost documentation).Как часто вывести из boost :: сигналы :: trackable?
Я нахожусь в ранней стадии моего проекта, и я имею в виду, нужно ли выводить из boost::signals::trackable
в
- каждый новый класс я пишу, что может использовать Boost.Signals в будущем
- или только в классы Я уверен, что они будут нуждаться в функциональности
trackable
барельефа электронного класса
основной причиной го первого подхода было бы помешать мне забыть, вытекающие из boost::signals::trackable
.
Также двойное deriverations как
class Foo : public Base, public boost::signals::trackable
{
};
получает ненужным.
С другой стороны, предотвращение утечек памяти не должно быть основным аспектом дизайна. Тестирование и профилирование, такие как valgrind, должны использоваться для обнаружения утечек памяти.
Какой подход больше подходит для растущих проектов?
Если вы беспокоитесь, возможно, напишите набор функций, которые вы всегда используете для подключения сигналов/слотов вместо прямого использования сигнала :: connect, в котором есть статическое утверждение, что класс должен быть получен из сигналов boost ::: : отслеживаются. Возможно, сигналы форсирования предлагают способ сделать это в любом случае. Таким образом, если вы забудете, ваш проект не будет компилироваться. – Pete
Почему вы не используете 'Boost.Signals2', который имеет гораздо более гибкий и мощный механизм отслеживания? –
@IgorR. Я не посмотрел на Boost.Signals2, потому что, хотя поддержка многопоточности замедлит мое приложение. Но, взглянув на [Управление соединением] (http://www.boost.org/doc/libs/1_49_0/doc/html/signals2/tutorial.html#id3151565), я собираюсь использовать «Boost .Signals2'. Спасибо! –