我對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
中爲它們實例化對象。
如果有一種方法可以完成我想完成的任務嗎? – Kam 2012-07-10 00:30:48
Downvoter:關心分享? – 2012-07-10 00:33:51
(對不起,延期,找到鏈接)。嵌套類是成員,可以像任何其他成員一樣訪問外部類,請參閱[DR 45](http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#45),它是自2003年以來的標準 – 2012-07-10 00:35:54