2012-02-26 65 views
1
#include <iostream> 

using namespace std; 

class Sample{ 
public: 
    enum{ x = 10 }; 
}; 

int main(){ 
    cout<<Sample::x<<endl; 
    return 0; 
} 

爲什麼在類中的枚舉是可以使用範圍解析運算符在主函數中訪問?爲什麼使用範圍解析運算符可以訪問enum?

+6

因爲這就是定義C++語言的方式。 – 2012-02-26 03:18:17

+0

@GregHewgill ok ..哪些其他數據類型有效? – niting112 2012-02-26 03:20:04

+0

@ niting112所有其他數據類型和typedefs – 2012-02-26 03:22:47

回答

7

我假設你問你爲什麼不必實例化一個Sample來訪問x。原因是enum s就像typedef s:他們創建一個新類型,他們不創建一個變量。您可以像訪問typedef或類中的struct/class聲明一樣訪問Sample::x

+0

謝謝!是的,我的懷疑正是你所說的。但抱歉,我不理解這一行:「您可以像訪問類中的typedef或struct/class聲明一樣訪問Sample :: x。」 – niting112 2012-02-26 03:32:10

+0

@ niting112例如,如果你做'struct A {struct B {}; };'你可以做'A :: B b;' – 2012-02-26 04:07:26

1

因爲enum定義在public區域。評論public關鍵字,你將無法訪問它。您在公共/非公共區域申報的typedef也一樣。

0

因爲enum S IN CPP具有默認內部鏈接即它們是由私人如果您在struct or class申報。因此,您必須使用::範圍分辨率運算符)來訪問枚舉(枚舉常量)。

在C語言中,你可以訪問統計員直接,因爲他們是在默認情況下全球

相關問題