我想创建一个包含具有不同参数的对象的地图。创建一个对象的地图而不破坏对象
但是我发现插入这对后,对象将被销毁。
如果我尝试使用该功能在此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