【发布时间】:2016-03-01 23:41:32
【问题描述】:
我正在尝试创建一个包含具有不同参数的对象的地图。
但是我发现插入pair后,对象会被销毁。
如果我尝试使用这个对象中的函数。例如:
#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;
}
它将显示: [错误] 调用 'Class::Class()' 没有匹配的函数
[Note] 候选人期望 1 个参数,提供 0 个参数
我该怎么做?
【问题讨论】:
-
在您的情况下,您似乎可以使用
map::at(如果找不到则抛出)而不是map::operator[](尝试插入默认对象,并返回插入/找到的对象)。
标签: c++ class object dictionary