我正在尝试将对象插入地图中。您可以在此处忽略大部分代码,但我会将其包含在内以提供帮助。它是mymap.insert(pair(name,myobj(num1,num2)));这给了我错误。
struct ap_pair {
ap_pair(float tp, float tm) : total_price(tp), total_amount(tm) {};
ap_pair & operator+=(const ap_pair &);
float total_price;
float total_amount;
};
void APC :: compute_total ()
{
string name;
map<string, ap_pair> :: iterator my_it;
float num1, num2, num3;
while (!fs.eof() )
{
fs >> name >> num1 >> num2; //read in file
ap_pair myobj(num1, num2); //send the weight/count and per unit price ap_pair
my_it = mymap.find(name); //returns iterator
if (fs.eof()) break; //makes it so the last line is not repeated
mymap.insert(pair<string,ap_pair>(name, myobj(num1, num2))); //ERROR IS HERE
num3= num1*num2;
total_amount+=num1;
total_price+= num3;
}
}
编译说&#34时我收到错误错误:不匹配呼叫&#39;(ap_pair)(float&amp;,float&amp;)&#34;。这是为什么?做我做的事有什么不对?我已经在这个工作了一个多小时,没有解决方案。有任何想法吗?如果需要,我可以提供一些关于我想要做的事情的更多想法。我认为这可能是我正在考虑的一个简单的语法问题。
答案 0 :(得分:4)
myobj(num1, num2)
这会尝试将您的myobj
对象称为仿函数。相反,您只想传递myobj
:
mymap.insert(pair<string,ap_pair>(name, myobj));