dポイントプレゼントキャンペーン実施中!

C++の初心者です。よろしくお願いします。
DirectXを使っていて簡単なゲームを作っていまして、
mapを使っていると、このようなエラーが出てしまいどうしても理由わかりませんでした。

class D2DMap : public GameTexture{

protected:

GameTexture** CopyTexture;
int MaxMass;
int WidthMass;
int HeightMass;
int WidthMassPixel;
int HeightMassPixel;

int MassInfo[30][30];

public:
D2DMap();
virtual ~D2DMap();

HRESULT LoadMapTexture(int widthmass,
int widthmasspixel,int heightmass, int heightmasspixel,
const char* FileName, D3DCOLOR color);

HRESULT LoadTextMass(const char* FileName);

int GetWidthMassPixel(){ return WidthMassPixel;}
int GetWidthMassNum(){ return WidthMass;}

int GetHeightMassPixel(){ return HeightMassPixel;}
int GetHeightMassNum(){ return HeightMass;}

int GetMassInfo(int x, int y){ return MassInfo[y][x];}

void DrawMap(D3DCOLOR color);
void DrawCopyMap(D3DCOLOR color);

void SetCopyTex(GameTexture* copy){ CopyTexture= ©}

void Delete(){}
};

map<string , D2DMap*> MapBox; と定義して

string Name="--------";
D2DMap map;

MapBox.insert( map<string, D2DMap*>::value_type(Name, &map));
としたとこと
error C2275: 'std::string' : この型は演算子として使用できません
'std::string' の宣言を確認してください。
error C2059: 構文エラー : '>'
error C2039: 'value_type' : '`global namespace'' のメンバではありません

というエラーが出てきました。
mapのfind や iterator は可能なのですがinsertの場合エラー
となり、理由が全く分かりません。詳しい方アドバイスをお願いしたい
のですが、よろしくお願いします。

VC++2008 を使っています。

A 回答 (1件)

> MapBox.insert( map<string, D2DMap*>::value_type(Name, &map));


の行ですが、コンパイラはmapを変数名として解釈してしまっているように見えますよ。

データ型のmap(std::map)と、変数名のmap(D2DMap map)
に同じ名前を使ってるのがよろしくないかもしれませんね。

この回答への補足

無事解決しました。
名前がmapとかっぶていました。
初歩的なミス…。しかし、気づかなかったので本当にありがとうございました。

補足日時:2009/05/11 03:05
    • good
    • 0
この回答へのお礼

ありがとうございました。
まだ試していませんが、早速修正してみたいと思います。

お礼日時:2009/05/10 15:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!