私有双变量,永远不会更新

时间:2017-04-02 21:36:37

标签: c++

这是我的代码:

我的结果永远不会改变,总是会变为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;
}

1 个答案:

答案 0 :(得分:0)

您在解除引用运算符中按值返回,创建一个副本,这意味着具有多次赋值的值是每个赋值的不同实例,而不是迭代器实例。