这是我的代码:
我的结果永远不会改变,总是会变为0。
我正在做两个向量的点积。我不能使用std::inner_product
之类的STL算法。所以我需要编写一个迭代器。 operator=
应该进行累积
template <uint32_t DIM>
double Vector<DIM>::dot(const Vector& rhs) const
{
return std::transform(begin(),end(),rhs.begin(),accumulator(),multiply()).getresult();
}
class accumulator
{
public:
accumulator& operator++(){
return *this;
}
accumulator operator++(int){
return *this;
}
accumulator operator*(){
return *this;
};
void operator=(double a){
result=result+a;
}
double& getresult(){
return result;
}
private:
double result;
}
答案 0 :(得分:0)
您在解除引用运算符中按值返回,创建一个副本,这意味着具有多次赋值的值是每个赋值的不同实例,而不是迭代器实例。