Я пытаюсь создать карту, содержащую объекты с разными аргументами.Создайте карту объектов без разрушения объектов
Но я обнаружил, что после вставки пары объект будет уничтожен.
Если я пытаюсь использовать функцию в этом 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;
}
Он покажет: [Error] без функции согласования для вызова 'Class :: Class()'
[примечание] кандидат ожидает 1 аргумент, 0 предоставлено
Как это сделать?
В вашем случае кажется, что вы можете использовать 'map :: at' (throw if not found) вместо' map :: operator [] '(попробуйте вставить объект по умолчанию и вернуть вставленный/найденный объект). – Jarod42