簡體   English   中英

如何在聲明時將 object 插入 std::map

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

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