このクラスの「印刷」関数で正しい合計を取得するのに問題があります
class PRN {
private:
typedef pair < string, int > P;
int sz, // map size – no of distinct words
cnt, // counter for printing
total; // no of words
public:
// constructor
PRN ( const int& s = 1, const int& c = 0, const int& t = 0 ){
cnt= c;
total = t;
sz = s;
}
void operator ( ) ( const P& p ){
total += p.second;
cout << total;
}// overloaded operator, where P is defined as
// typedef pair < string, int > P;
void print () const{
cout <<"no of words in output list : " << total << endl;
}
};
それから私のメインで私は電話します
PRN p (m.size());
for_each(m.begin(),m.end(),p);
p.print();
m は、いくつかの値 (文字列、整数) を含むマップです。オペレーターはそれらを印刷しているため追加していますが、それらが追加されていることがわかりますが、 p.print() を呼び出すと、「合計」に対してゼロが返されます。
助言がありますか?ありがとう