Я работаю на простом автомате, похожем на this .
Я пытаюсь кодировать свои состояния в отдельных классах, которые выглядят следующим образом:
// class StateA; (1)
// class StateB; (2)
using State = std::variant<StateA, StateB>;
class StateA {
State handle(/* some params */) { return StateB(); };
};
class StateB {
State handle(/* some params */){ return StateA(); };
};
Теперь мой вариант ничего не знает о StateA и StateB, что приводит к use of undeclared identifier 'StateA'
. Если я раскомментирую (1) и (2) и получу предварительное объявление, я получу incomplete type 'StateA' used in type trait expression
Есть ли способ получить вариант с классами, в котором есть вариант?