Я относительно новичок в С++, и я много искал ответа для этой вещи, но у меня не было удовлетворительного ответа.
Скажем, у меня есть структура, называемая FSM. В конечном итоге в моем коде можно создать несколько экземпляров FSM. Одним из атрибутов FSM является int X, который не является статическим, каждый экземпляр FSM должен иметь собственное значение для X.
Теперь одним из атрибутов FSM является другая структура submachine, которая должна читать значение X следующим образом:
struct FSM
{
public:
int x;
int getX(){return x;}
struct submachine
{
void onentry() {int g = getX();};
};
};
Это приводит к следующей ошибке:
Ошибка: "FSM:: getX": незаконный вызов нестатической функции-члена
Мой вопрос: submachine является членом FSM, поэтому не должен ли он иметь доступ к локальным экземплярам всех атрибутов FSM? А если нет, когда мы создадим экземпляр FSM, не будем ли мы создавать экземпляр всех его членов, т.е. submachine? И если да, то почему нам нужно создать объект, который нужен onentry()?
Я предполагаю, что компилятор прав, поэтому я также хотел бы знать, есть ли способ сделать эту работу.
ПРИМЕЧАНИЕ. К сожалению, экземпляры внутренних структур (submachine) создаются при вызове события и поэтому я могу определить тип, а не создавать объекты для них в FSM.