簡體   English   中英

C ++如何聲明映射變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM