2012-02-26 70 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语言中,你可以访问统计员直接,因为他们是在默认情况下全球

相关问题