簡體   English   中英

無法訪問靜態成員函數C ++

[英]Can't access static member function C++

我有一個類型map的靜態成員。 但每當我嘗試訪問它時,我總是會收到錯誤。 例如

// a.h
class a {
    public:
        static map<string, int>m;
    a() {
    }
    ~a() {
    }
};

// a.cpp
    a::m['ADD']=1;

這是我得到的錯誤=“數組的大小具有非整數類型'const char [4]”我在鏈接器中也得到一個奇怪的錯誤。

您需要先定義地圖,然后才能使用它:

std::map<std::string, int> a::m = std::map<std::string, int>{{"ADD", 1}};

這會將它初始化為一個映射,其中包含一個帶有鍵std::string("ADD")和值1元素。

另請注意,對字符串文字使用雙引號。

編譯器錯誤:您可能在使用雙引號時使用單引號。

鏈接器錯誤:定義類的靜態變量時,還必須在某個cpp文件中定義它們。 將以下行添加到您的cpp文件:

map<string, int> a::m;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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