Я относительно новичок в С++, и я много искал ответа для этой вещи, но у меня не было удовлетворительного ответа.
Скажем, у меня есть структура, называемая 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
.