Здравствуйте, so5team, Вы писали:
S>Здравствуйте, SaZ, Вы писали:
SaZ>>Пытаюсь отправить сигнал сам себе, что-то вроде
SaZ>>SaZ>>struct Proceed final: public so_5::signal_t{};
SaZ>>//...
SaZ>>so_5::send<Proceed>(*this); // this - агент
SaZ>>
SaZ>>Получаю статический ассерт: message.hpp(543): error C2338: message class must be derived from the message_t.
SaZ>>Как правильно писать обработчики сигналов?
S>А ошибка диагностируется в месте отсылки сигнала или в месте подписки на сигнал?
Диагностируется в месте отсылки, но пропадает, если я удаляю подписку на обработчик. Поэтому я подразумеваю, что что-то не так с обработчиком.
class myagent: ...
{
void onSignal(const Proceed&); // при void onSignal(Proceed); чуть другая ошибка
...
so_subscribe_self().event(&myagent::onSignal); // Если закомментировать, то ошибка пропадает, но сигнал идёт вникуда.
}
Если не разберёмся сейчас, то накидаю минимальный примерчик.