Скорее всего, проблема в том, что вы не можете использовать shared_from_this
, пока объект фактически не управляется общим указателем. В общем случае не стоит запускать поток или асинхронный сервис в конструкторе, так как вам может не повезти, и новый поток может запуститься до завершения конструктора и, следовательно, выполнить не полностью созданный объект.
В вашем конкретном случае это еще хуже, поскольку вы входите в цикл обработки событий внутри конструктора вашего класса Timer
, и это означает, что элемент управления никогда не возвращается к main
, объект никогда не управляется * 1006. * в основном ...
Вы должны переместить вызов на start
, а вызов на run()
- в другую функцию и вызвать его с main
после , объект фактически управляется в shared_ptr
.