2012-11-19 200 views
1

我有以下代碼:私人與公共的typedef

//MyClass.h 
class MyClass { 
     typedef std::map<std::string, int> OpMap; 
     static const OpMap::value_type opMap[OP_COUNT]; 

    public: 
    //methods 
}; 

//MyClass.cpp 
const MyClass ::OpMap::value_type opMap[DDG::OP_COUNT] = { 
    MyClass ::OpMap::value_type("hello", 42), 
     MyClass ::OpMap::value_type("world", 88), 
}; 

上述代碼的編譯失敗。 只有當我讓typdef公開的時候,它是可以的。 能否請你解釋爲什麼typedef應該在這種情況下是公共

+1

什麼是'DDG'? –

+1

Srsly,什麼是DDG? – WhozCraig

回答

3

const DDG::OpMap::value_type opMap[DDG::OP_COUNT] = { 

應該

const DDG::OpMap::value_type MyClass::opMap[DDG::OP_COUNT] = {