如何在C ++中正确使用pair

时间:2014-01-17 17:05:58

标签: c++

我正在尝试将对象插入地图中。您可以在此处忽略大部分代码,但我会将其包含在内以提供帮助。它是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;。这是为什么?做我做的事有什么不对?我已经在这个工作了一个多小时,没有解决方案。有任何想法吗?如果需要,我可以提供一些关于我想要做的事情的更多想法。我认为这可能是我正在考虑的一个简单的语法问题。

1 个答案:

答案 0 :(得分:4)

myobj(num1, num2)

这会尝试将您的myobj对象称为仿函数。相反,您只想传递myobj

mymap.insert(pair<string,ap_pair>(name, myobj));