[英]C++ How to declare map variable
我是C ++的新手,在頭文件中聲明映射變量時遇到麻煩。 在各種帖子中,我看到人們包括#include <map>
,並且解決了他們的問題,因此我將其包含在文件中。
#include <map>
class Game
{
typedef void (Game::*InputResponse)( void );
public:
Game();
private:
std::map <char[], InputResponse> inputResponseMap;
};
在編譯和構建時,它指向#include "Game.h"
的.cpp文件的#include "Game.h"
。 In file included from Game.cpp:8:
刪除地圖類型變量inputResponseMap
解決此問題,所以我認為這就是問題所在。 我究竟做錯了什么?
std::map <char[], InputResponse> inputResponseMap;
其中的char[]
部分不是有效(完整)的C ++類型。
如果您的意圖是將地圖的鍵設置為文本字符串,則應使用std::string
:
std::map <std::string, InputResponse> inputResponseMap;
並且,當然是#include <string>
。
char[]
是不完整的類型,通常C風格的數組缺少映射鍵類型所需的幾個屬性(特別是C數組無法分配,也不能通過運算符<直接比較)。
只需使用std::string
作為鍵類型即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.