//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
}
我很困惑爲什麼顏色不能被類對象訪問,因爲通過使用類名可以訪問它。枚舉器標記名稱不能被類對象訪問?
enum是類中的一個類型,因此'Analyzer :: color'。如果它是一個靜態成員,那麼該語法就可以工作。然而,在這種情況下讓這種語法起作用是值得商榷的。其他語言只能選擇允許以等同於'ClassName :: member'的方式訪問靜態成員,就像內部類型以C++工作一樣。 – chris
@chris ::因爲枚舉不是一個靜態的,所以它可以通過對象訪問嗎? – Kenta
@viku問題不在於它是否是靜態的。問題是,它不是一個對象,而是一個類型。** – 2012-12-25 08:46:32