类对象无法访问枚举器标记名称?

时间:2012-12-25 08:19:09

标签: c++ enums

//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
}

我很困惑为什么颜色不能被类对象访问,因为使用classname可以访问它。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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