Внутренний класс, обращающийся к внешнему классу [duplicate]
This question already has an answer here:
Inner Class access to Outer Class members 5 answersЯ относительно новичок в C ++, и я долго искал ответ на этот вопрос, но я так и не получил удовлетворительного ответа.
Допустим, у меня есть структура под названием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();};
};
};
Это дает следующую ошибку:
Error: 'FSM::getX' : illegal call of non-static member function
Мой вопросsubmachine
является членомFSM
поэтому он не должен иметь доступа к локальным экземплярам всех атрибутовFSM
? И если нет, то когда мы создаем экземплярFSM
Если бы мы не создавали экземпляр всех его членов, т.е.submachine
? И если так, то зачем нам создавать объект, которыйonentry()
потребности?
Я предполагаю, что компилятор корректен, поэтому я также хотел бы знать, есть ли способ заставить эту работу работать.
ПРИМЕЧАНИЕ: К сожалению, экземпляры внутренних структур (submachine
) создаются, когда вызывается событие, и поэтому я могу только определять тип, а не создавать объекты для них вFSM
.