class Outer { class Inner { public: Inner() {} void func() ; };private: static const char* const MYCONST; int var;};void Outer::Inner::func() { var = 1;}const char* const Outer::MYCONST = "myconst";當我使用類Outer :: Inner'編譯時,這個錯誤輸出沒有名為`var'的成員
3 回答

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
內部類可以訪問外部類的所有成員,但它沒有對父類實例的隱式引用(與Java的一些奇怪之處不同)。因此,如果將對外部類的引用傳遞給內部類,它可以引用外部類實例中的任何內容。

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
var不是內部類的成員。
要訪問var,應使用指向外部類實例的指針或引用。例如,如果內部類是外部的朋友,則pOuter-> var將起作用,如果嚴格遵循C ++標準,則var是public。
有些編譯器將內部類視為外部的朋友,但有些可能不是。有關IBM編譯器,請參閱此文檔:
“嵌套類在另一個類的范圍內聲明。嵌套類的名稱是其封閉類的本地。除非使用顯式指針,引用或對象名稱,否則嵌套類中的聲明只能使用可見的構造,包括封閉類和全局變量中的類型名稱,靜態成員和枚舉器。
嵌套類的成員函數遵循常規訪問規則,并且對其封閉類的成員沒有特殊的訪問權限。封閉類的成員函數對嵌套類的成員沒有特殊的訪問權限?!?/p>
- 3 回答
- 0 關注
- 764 瀏覽
添加回答
舉報
0/150
提交
取消