У меня есть базовый класс, называемый StateDefinition, и он имеет следующее определение:
class StateDefinition
{
public:
StateDefinition();
virtual bool condition() { return false; }
virtual void reach() {}
};
У меня есть некоторые производные классы, которые переопределяют методы условия и досягаемости. Я использую std::vector<StateDefinition*> m_stateMachine
для хранения объектов из производных классов. Затем я пытаюсь получить доступ к элементам следующим образом:
for (auto state = m_stateMachine.begin(); state != m_stateMachine.end(); state++)
{
if (!state->condition())
{
state->reach();
break;
}
}
Но этот код не компилируется, я получаю следующую ошибку:
ошибка: базовый тип элемента 'std :: _ Simple_types :: value_type' (он же StateDefinitions *) не является структурой или объединением
Поэтому мой вопрос: как получить доступ к элементам вектора polymorphi c с помощью for