我想創建一個包含具有不同參數的對象的地圖。創建一個對象的地圖而不破壞對象
但是我發現插入這對後,對象將被銷燬。
如果我嘗試使用該功能在此object.For例如:
#include <map>
#include <iostream>
class Test{
public:
Test(double value) : value_(value){}
~Test(){std::cout<< "destroyed";}
void plusone() {value_ += 1;}
private:
double value_;
};
int main(){
std::map<long, Test> map;
map.insert(std::make_pair(1, Test(1.2)));
map[1].plusone();
return 0;
}
它會顯示: [錯誤]對於呼叫沒有匹配功能 '類::類()'
[備註]候選人期望1參數,0提供
我該怎麼做?
在你的情況,似乎你可以使用'map :: at'(throw if not found)而不是'map :: operator []'(嘗試插入默認對象,並返回插入/找到的對象)。 – Jarod42