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