C ++如何声明map变量

时间:2016-05-01 23:23:29

标签: c++ dictionary

我是C ++的新手,无法在头文件中声明一个map变量。在各种帖子中,我看到人们包括#include <map>并且它修复了他们的问题,所以我把它包含在文件中。

#include <map>

class Game
{

    typedef void (Game::*InputResponse)( void );

public:

    Game();

private:

    std::map <char[], InputResponse> inputResponseMap;
};

当我编译和构建时,它指向该类的.cpp文件的#include "Game.h"In file included from Game.cpp:8:删除地图类型变量inputResponseMap可以解决问题,因此我认为这就是问题所在。我做错了什么?

2 个答案:

答案 0 :(得分:4)

std::map <char[], InputResponse> inputResponseMap;

char[]部分不是有效的(完整的)C ++类型。

如果您的意图是将地图的密钥设为文字字符串,则应使用std::string

std::map <std::string, InputResponse> inputResponseMap;

当然,#include <string>为此。

答案 1 :(得分:2)

char[]是一个不完整的类型,通常C样式的数组缺少map键类型所需的几个属性(特别是,C数组不能分配,不能通过operator&lt;直接比较)。

只需使用std::string作为密钥类型。