2014-12-23 66 views
-1

一個快速的C++問題(我認爲)。我有一個包含在其頭文件中的公共枚舉變量的類:如何定義類中包含的枚舉變量

class TritonRackController { 
    public: 
      enum CurrentMode {MODE_COMBI, MODE_PGM, MODE_MULTI}; 
    // etc. 
}; 

然後,使用這個類的一個對象,當我需要設置爲CURRENTMODE值的變量:

TritonRackController* tritonRackController = new TritonRackController(); 
TritonRackController::CurrentMode tritonMode = tritonRackController->CurrentMode; 
// compile error on line above: Invalid use of 'enum TritonRackController::CurrentMode 

我認爲這會編譯好,但是爲什麼它不會。另外,我在枚舉語句中假設我已經定義了一個類型 - 是否正確?

謝謝你們 皮特

+1

我想你婉這樣說這個:'TritonRackController :: CurrentMode tritonMode = TritonRackController :: MODE_COMBI' –

+0

你需要發佈所有的代碼,但你可能誤解了'tritonRackController-> CurrentMode'意味着什麼e編譯器。 –

+0

Ahh解決了這個問題:enum CurrentMode定義了一個類型,然後我添加了一個變量定義:CurrentMode currentMode;在課堂裏。然後,我可以訪問它:TritonRackController :: CurrentMode tritonMode = tritonRackController-> currentMode。我的問題是我把enum當作變量混淆了,當它更像是一個typedef。 – Pete855217

回答

2

我想你想類型CURRENTMODE的數據成員?

private: 
    CurrentMode m_eMode; 

然後提供一個公共的訪問

public: 
    CurrentMode GetMode() const {return m_eMode;} 

這樣的話你的代碼來設置一個局部變量應該使用獲取模式()訪問:

TritonRackController::CurrentMode tritonMode = tritonRackController->GetMode(); 
+0

不要忘記在你的ctor中初始化m_eMode! – franji1

+0

謝謝franji1 - 是的,我需要一個數據成員,如你所列。我得到了enum混淆了一個變量,實際上它只是一個typedef,並且需要一個該類型實例化的變量......再次感謝。 – Pete855217