2016-05-21 4 views
-1

マップを持つクラスをコンパイルするのに問題があります。私はprivateで構造体を定義し、次にmapを宣言します。問題は、g ++が構造体を認識しないように見えるので、コンパイラg ++が私にイテレータを使用する関数でエラーが出るということです。マップタイプのマップでヘッダファイルをコンパイルする際にエラーが発生しました。<string、struct>

.hhファイル:

#ifndef _X_HH_ 
#define _X_HH_ 
class X{ 
public: 
(lots of function and procedure headers) 

private: 
struct something{ 
(Its attributes) 
}; 
map<string,something> mymap; 
}; 
#endif 
+3

エラーが正確には何ですか? – coredump

+0

パブリックタイプエイリアスを作成しますか? http://ideone.com/1GwQsX – kfsone

+0

'#include 'と 'std ::'?を忘れましたか?インクルードがさらに含まれているようです。 –

答えて

0
#include <map> 
#include <string> 

class X{ 
public: 
    X(); 

private: 
struct something{ 
int a; 
}; 

std::map<std::string,something> mymap; 
}; 

int main(){ 
} 
+1

いくつかの説明を追加してください。このコードは何をしていますか? – cst1992

+0

このコードは、2つの異なるint値とmap およびmap を含む構造体をその属性に持つクラスの.hhファイルです。そのことは、そのクラスの.ccファイルをコンパイルしようとするとコンパイルエラーが発生するため、.hhファイルのprivateまたはpublicで構造体を宣言する必要があるかどうかわかりません。コンパイラは、.ccファイルのクラスの関数のヘッダに到着したときに構造体を認識しません。 –

関連する問題