2013-11-10 44 views
2

我在Ubuntu 12.04上使用g ++作爲編譯器,並且遇到了嘗試使用Alignment枚舉來恰當放置我的GUI對象的問題。下面是guichan的graphics.hpp相關代碼:訪問位於名稱空間內的類內的枚舉

... 
00053 namespace gcn 
00054 { 
00055  class Color; 
00056  class Font; 
00057  class Image; 
00058 
00094  class GCN_CORE_DECLSPEC Graphics 
00095  { 
00096  public: 
00100   enum Alignment 
00101   { 
00102    LEFT = 0, 
00103    CENTER, 
00104    RIGHT 
00105   }; 
... 

下面是我使用的嘗試訪問中心的連線。

gcn::Graphics::Alignment _align = gcn::Graphics::Alignment::CENTER; 

有錯誤我得到的是:

error: ‘gcn::Graphics::Alignment’ is not a class or namespace

我希望有人可以給我一隻手,我到處去尋找類似的問題,但都無濟於事。

+1

'GCN :: Graphics.Alignment' – blueblob

+0

遺憾的是不工作,或者至少不同的方法,我已經嘗試過了。 – slacker

回答

2

枚舉名稱被注入到封閉名稱空間中,除非您使用引入到2011版本的C++中的enum class。如果您使用純enum,你只需用封閉的範圍限定名稱:

gcn::Graphics::CENTER 
+0

+1,注意:使用相同的符號(在這種情況下爲'LEFT')聲明不同的枚舉類型(如'enum Position {LEFT = 1,...}')同樣是不合法的,直到前面提到的特徵這個答案的C++ 11('enum class') – WhozCraig

+0

非常感謝你,Dietmar!:D編輯:我會記住這一點,謝謝你Craig。 – slacker