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

时间:2015-01-17 06:58:09

标签: c++ constructor compiler-errors

我的代码中存在问题(编译问题)。如果你能向我解释为什么会这样,以及我如何解决它,我会很高兴。

错误 -

  

错误C2512:'项目':没有合适的默认承包商

*项目是一组

发生此错误的行不在我的代码中,文件中的问题称为元组,但在我的代码中,问题显示在我执行此操作时 -

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;
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您滥用此行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

插入地图中