저는 C++에 비교적 익숙하지 않습니다.이 문제에 대한 답을 많이 찾았지만 결코 만족스러운 대답을 얻지 못했습니다.외부 클래스에 액세스하는 내부 클래스
내가 FSM
이라는 구조를 가지고 있다고 가정 해 보겠습니다. 결국 내 코드에서 FSM
의 여러 인스턴스를 만들 수 있습니다. FSM
의 속성 중 하나는 int X
이며 정적이 아니며 FSM
의 모든 인스턴스는 X
에 대해 고유 한 값을 가져야합니다.
Error: 'FSM::getX' : illegal call of non-static member function
내 질문은 :
struct FSM
{
public:
int x;
int getX(){return x;}
struct submachine
{
void onentry() {int g = getX();};
};
};
이 다음과 같은 오류가 있습니다 :
이제 FSM
의 특성 중 하나는 다음과 같이 X
의 값을 읽을 필요가 또 다른 구조 submachine
입니다 , submachine
은 FSM
의 구성원이므로 FSM
의 모든 속성의 로컬 인스턴스에 대한 액세스 권한을 갖고 있지 않아야합니까? 그리고 그렇지 않은 경우 FSM
의 인스턴스를 만들면 모든 멤버의 인스턴스 즉 submachine
을 만들지 않겠습니까? 그렇다면 onentry()
에 필요한 객체를 만들어야하는 이유는 무엇입니까?
저는이 컴파일러가 올바른 것으로 가정하므로이 작업을 수행 할 수있는 방법이 있는지 알고 싶습니다.
참고 : 안타깝게도 이벤트가 호출 될 때 내부 구조체 인스턴스 (submachine
)가 인스턴스화되므로 형식을 정의 할 수만 있고 FSM
에서 개체를 인스턴스화 할 수 없습니다.
내가 성취하고자하는 목표를 달성 할 수있는 방법이 있다면? – Kam
Downvoter : 공유하는 관심사? –
(지연되어 죄송합니다. 링크를 찾는 중이었습니다). 중첩 클래스는 멤버이며 다른 멤버와 마찬가지로 외부 클래스에 액세스 할 수 있습니다. [DR 45] (http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#45), 2003 년 이후의 표준 –