Внутренний класс, обращающийся к внешнему классу [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.

Ответы на вопрос(4)

Ваш ответ на вопрос