Здравствуйте, Кодт, Вы писали:
Спасибо за развернутый ответ.
Подходы 1, 2 подходят. Единственное, что мне не нравится в подходе 2, это мои слабые знания.

Т.е. я никогда еще не пользовался виртуальным наследованием. Возможно, и мои коллеги тоже. Такой подход требует хорошей документации исходников. Кстати, как часто вам приходилось им пользоваться?
В подходе 3 минусом можно считать, что объект класса Concrete будет содержать в себе также объект класса BaseThread, но не пользоваться им. Получается перерасход ресурсов. Опять же, никогда не пользовался переопределением свойств классов. Что вы можете сказать на этот счет, плохо это, или хорошо? Какие могут быть проблемы, при таком использовании этой техники (ну кроме потребления ресурсов)?
Подход 4. Как минус можно назвать усложнение процесса инициализации объекта. Т.е. нужны хорошие комментарии.
Подход 5. В общем подходит очень хорошо.
Подход 6. Потерялось наследование Concreate от Base. А зачем класс Concrete дружит с классом friend class BaseT<
Base>; ? И кстати, зачем вообще объявлена дружба с классом, от которого мы наследуемся?
Подход 7. В бусте потоки в связке с биндерами очень мощные. Но к сожалению, я вынужден использовать Qt для этих целей. Работаем с тем, что есть, а не с тем чем хочется.
В общем пока примерял все подходы, родилась еще одна идея. Унаследовать класс Base от класса Thread. Получилось что-то на подобие вот этого
здесь Критика приветствуется.
P.S. Осознал, что наследование должно быть private, но менять уже не буду.