2012-10-03 40 views
0

這是我有的結構,我試圖爲其編寫默認構造函數。爲什麼我的構造函數在結構中的映射不工作?

struct Cnode 
{ 
typedef std::map<char, int> nextmap; 
typedef std::map<char, int> prevmap; 

Cnode() : nextmap(), prevmap() {} //error 
Cnode(const nextmap2, const prevmap2) : nextmap(nextmap2), prevmap(prevmap2) {} 

}; 

請幫我明白這是什麼錯誤意味着:

Type 'nextmap'(aka 'map<char,int>') is not a direct or virtualbase of 'Cnode' 
Type 'prevmap'(aka 'map<char,int>') is not a direct or virtualbase of 'Cnode' 
+0

你有什麼打算?你想讓'nextmap'成爲嵌套類型還是字段? – Vlad

回答

6

因爲nextmapprevmap不變量,但類型。正如typedef(它定義了一個類型)清楚地表明的那樣。

你的意思是:

struct Cnode 
{ 
std::map<char, int> nextmap; 
std::map<char, int> prevmap; 

Cnode() : 
    nextmap(), prevmap() {} 
Cnode(const std::map<char, int>& nextmap2, const std::map<char, int>& prevmap2) : 
    nextmap(nextmap2), prevmap(prevmap2) {} 

}; 

或許這可能會清除你的困惑:

struct Cnode 
{ 
typedef std::map<char, int> MapOfCharToInt; //defines a new type 

MapOfCharToInt nextmap;      //defines variables 
MapOfCharToInt prevmap;      //of that type 

Cnode() : 
    nextmap(), prevmap() {} 
Cnode(const MapOfCharToInt& nextmap2, const MapOfCharToInt& prevmap2) : 
    nextmap(nextmap2), prevmap2(prevmap2) {} 

}; 
+0

哦!不,我不想在一張地圖下使用2個變量。我需要用2張地圖填充Cnode。這些映射中的每一個都應包含一個char列表作爲鍵類型和一個int列表作爲值類型。 – snazziii

+0

@sumrania這兩個片段上面聲明2個變量... –

+0

好吧,那麼我會怎麼去寫一個結構中的2個地圖的構造函數呢? – snazziii

相關問題