我正在研究一些类中有简单枚举的代码.另一段代码有一个指向该类的指针,并通过箭头指针访问枚举的值.
该类如何以这种方式访问MY_VALUE1?我虽然它只允许通过MyClass :: MY_VALUE1或MyClass :: MyEnum :: MY_VALUE1进行访问.
class MyClass {
public:
enum MyEnum{
MY_VALUE0 = 0,
MY_VALUE1 = 1
};
//getters, setters as appropriate
};
//Other class
MyClass* myClass = new MyClass();
//Compiles without C++11
if(getRandomEnum() == myClass->MY_VALUE1)
{
//Do Stuff
}
Run Code Online (Sandbox Code Playgroud)
该->运营商(大部分)的缩写为dereference(*)和selection(.).换句话说,a->b就是一样(*(a)).b.(§5.2.5/ 2;见下面的注释).
该.语法是类成员访问,通过§5.2.5[expr.ref]所定义; 右侧的标识符.可以是静态或非静态数据成员,函数或成员枚举器(引用部分的第4段).它不能是嵌套类型.从这个意义上讲,成员枚举器在语法上与static const数据成员类似.
笔记:
正如§13.5.6所阐明的那样,a->b是否受运营商超载的影响.如果a不是指针类型,则->可能会重载,在这种情况下表达式被解释为(a.operator->())->b.最终,重载->调用的序列必须产生指针类型,此时应用§5.2.5/ 2的解释.
在第二种情况下,即使没有必要解析其值,也将评估Class::member和之间的重要区别.value.membervaluemember
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |