【发布时间】:2018-12-16 03:11:36
【问题描述】:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <class T>
class Sum {
public:
Sum(T i = 0) : res(i) {}
void operator()(T x) { res =res + x; }
T result() const { return res; }
private:
T res;
};
int main() {
Sum<int> s;
vector<int> vec;
vec.insert(vec.begin(), 10);
vec.insert(vec.begin()+1, 10);
vec.insert(vec.begin()+2, 10);
vector<int>::iterator itr = vec.begin();
cout << *itr << endl;
for_each(vec.begin(), vec.end(), s);
cout << "sum is" << s.result() << endl;
return 0;
}
这是我的代码。我想在 Sum res 类中添加 vec 值。 for_each 应该调用s 的operator(),所以结果应该是30,但它显示的是0。
我认为在向量中添加值没有问题。为什么s.operator() 不起作用?
【问题讨论】:
标签: c++