[英]How to insert object into std::map while declaration
問題:
我試圖在編譯時將 class 的實例插入std::map但總是出現以下錯誤。
main.cpp:18:12: error: ‘_info’ was not declared in this scope
_info(1)
^
第 18 行指向代碼塊下方
15. std::map<std::string, Info > lookup {
16. {
17. "aclk",
18. _info(1)
19. }
20. };
代碼:
#include <random>
#include <iostream>
#include <functional>
#include <map>
class Info{
int _info;
public:
Info(int info){
_info = info;
}
};
std::map<std::string, Info > lookup {
{
"aclk",
_info(1)
}
};
int main()
{
//dummy
}
觀察:
當我動態創建 object 時,我沒有看到任何此類錯誤。
const std::map<std::string, Info > lookup {
{
"aclk",
new Info(1)
}
};
但是 map 是const
並且用new
插入實例沒有任何意義。
您必須提供Info
類型的 object 而不是其數據成員_info
。 例如
std::map<std::string, Info > lookup {
{
"aclk",
1
}
};
這是有效的,因為 class Info
具有轉換構造函數。
或者(例如,如果構造函數是顯式的)
std::map<std::string, Info > lookup {
{
"aclk",
Info(1)
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.