我是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
可以解决问题,因此我认为这就是问题所在。我做错了什么?
答案 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
作为密钥类型。