1
//In Analyzer.h

class Analyzer
{
public :
    enum color{red, green ,blue};
Analyzer()
{
     cout<<"ctor";
}
    ~Analyzer();
};

//In main.cpp
#include"Analyzer.h"
int main()
{
    Analyzer *Ana = new Analyzer();
    Ana->color c ;//Error
    Analyzer::color c ;//Ok
    return 0
}

我很困惑为什么类对象不能访问颜色,而使用类名可以访问颜色。

4

2 回答 2

3

成员访问运算符->只能.用于访问数据成员、枚举成员和类的成员函数。顺便说一句,使用这些运算符访问静态数据成员和函数是完全合法的,即使这种访问不需要左侧(无论如何都要评估左侧)。

这些运算符不能用于访问类的嵌套类型。

在您的示例color中是嵌套类型,这意味着这Ana->color不是有效的构造。同时,Ada->red有效。

于 2012-12-25T08:52:52.163 回答
2

您只能通过箭头运算符访问类的数据成员和成员函数。枚举是一种嵌套类型。

于 2012-12-25T08:49:59.780 回答