我无法在此类中使用“打印”功能来获得正确的总数
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() 时,它为“总数”返回零。
有什么建议么?谢谢