//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可以访问它。
答案 0 :(得分:3)
成员访问运算符->
和.
只能用于访问类的数据成员,枚举成员和成员函数。顺便说一句,使用这些运算符访问静态数据成员和函数是完全合法的,即使这样的访问不需要左侧(在任何情况下评估左侧)。
这些运算符不能用于访问类的嵌套类型。
在您的示例中,color
是嵌套类型,这意味着Ana->color
不是有效的构造。同时,Ada->red
有效。
答案 1 :(得分:2)
您只能通过箭头操作符访问类的数据成员和成员函数。枚举是一种嵌套类型。