我编写了以下函数对象模板类:
template
<typename P=double, typename C=double>
class VAT{
public:
VAT(P p):percentance(p){};
P operator()(C currency ){
currency = currency + currency * (percentance/100);
return currency;
}
private:
P percentance;
};它将在标准容器上运行,并更改它的值,例如:
std::transform(prices.begin(),prices.end(),prices.begin(),std::bind(VAT<double,double>(25),std::placeholders::_1));我想要实现的是有一个sum,将随着价格的变化而更新。所以我想要有一个静态数据成员,所以我重写了模板,包括一个static C sum = 0和
P operator()(C currency ){
currency = currency + currency * (percentance/100);
sum = sum + currency;
return currency;
}但这是不正确的。有什么办法可以实现我想做的事情吗?
发布于 2014-04-24 13:00:02
你可以,只要稍微调整一下你的类和你使用它的方式。
template <typename P=double, typename C=double>
class VAT{
public:
VAT(P p, P& sum):percentance(p), sum(sum) {};
P operator()(C currency ){
currency = currency + currency * (percentance/100);
sum += currency;
return currency;
}
private:
P percentance;
p& sum;
};
double sum = 0.0;
VAT<double, double> vat(25, sum);
std::transform(prices.begin(),prices.end(),prices.begin(),vat,std::placeholders::_1));
// Now you can use sum ...
std:cout << sum << std::endl;https://stackoverflow.com/questions/23260099
复制相似问题