2014-09-25 91 views
1

說我有這樣的事情通過外部類的實例訪問一個嵌套的內部類

class Outer 
{ 
public: 
    static int m_Out; 
    class Inner 
    { 
    public: 
     static int m_In; 
     void Display(); 
    }; 

}; 

int Outer::m_Out = 10; 
int Outer::Inner::m_In = 25; 

void Outer::Inner::Display() 
{ 
    std::cout <<m_Out << std::endl; 
} 

int main() 
{ 
    Outer objOut; 
    Outer::Inner objIn; 
    objouOut.Inner::m_in //Error 
    std::cin.get(); 
} 

這是爲什麼不可能?這是否意味着我無法通過Outer類的實例訪問類內部?我知道我可以用外::內蒙古:: m_in抓住它,但我想知道我的侷限性,當它通過外部類

+0

@這完全有道理。 – MistyD 2014-09-25 21:03:38

回答

0

由於該成員變量m_In聲明static它屬於class Inner,而不是到class Inner的任何實例的事實。

因此,以下代碼的部分是無效的C++語法:

objOut.Inner::m_In; 

爲了訪問它要鍵入:

Outer::Inner::m_In 

此外,限定了內部類不意味着外部類的每個對象都會有一個內部類的成員對象。內部類的定義相當於外部類定義範圍內用戶類型的定義。

+0

請放下評論,內部類是一種類型,所以我可以將其標記爲答案。這是最初發布的評論,但被刪除。此聲明爲我清除了所有內容,並希望能夠幫助其他人。謝謝您的詳細解答 – MistyD 2014-09-25 21:11:01

0

的實例來嵌套類訪問這應該這樣做

class Outer{ 
public: 
    static int m_Out; 
    class Inner 
    { 
    public: 
     static int m_In; 
     void Display(); 
    }; 

}; 

int Outer::m_Out = 10; 
int Outer::Inner::m_In = 25; 

void Outer::Inner::Display() 
{ 
    std::cout << m_Out << std::endl; 
} 

int main(){ 
    Outer::Inner objIn; 
    Outer::Inner::m_In; 
     std::cin.get(); 
} 

你沒有做Outer objOut;

+0

我知道如何訪問它。我想知道爲什麼。請在答案中寫下內部類是類型的評論。清除所有內容 – MistyD 2014-09-25 21:04:20

+0

抱歉,遲到的評論大聲笑在YouTube上觀看視頻。 @ 40two幾乎總結了你。 – 2014-09-25 21:08:50

相關問題