没有合适的默认承包商可用编译器错误

no appropriate default contractor available compiler error

我的代码有问题(编译问题)。如果您能向我解释为什么会发生这种情况以及我该如何解决它,我会很高兴。

错误 -

error C2512: 'Item': no appropriate default contractor available

*项目是一套

发生此错误的行不在我的代码中,问题在名为 tuple 的文件中,但在我的代码中,当我执行此操作时出现问题 -

void init(map <int, Item>& itemli)
{
   Item temp("ro","1",1,1.99);
   itemli[1] = (temp);
   temp.setName("bo");
   temp.setSerialNumber("2");
   temp.setUnitPrice(2.22)
   // And so it goes on ...
}

我的承包商 -

Item::Item(string name,string serialNumber,int count, double unitPrice)
{
   _name = name;
   _serialNumber = serialNumber;
   _count = count;
   _unitPrice = unitPrice;
}

感谢您的帮助!

您在这一行误用了地图itemli[1] = (temp);

相反,您应该

Item temp("ro","1",1,1.99);
temp.setName("bo");
temp.setSerialNumber("2");
temp.setUnitPrice(2.22)
itemli.insert(std::make_pair(1, temp);//Moved so that setName will relect to temp in Map
// And so it goes on ...

temp 是一个普通对象(不是指针),因此如果您要插入映射 std::map will make a copy of your Item and put it into itemli