2017-04-02 9 views
0

Hier aktualisiert ist mein Code:Privat Doppel Variable, wird nie

Mein Ergebnis nie ändert und geht immer auf 0

ich ein Skalarprodukt von zwei Vektoren tue. Ich kann keine STL-Algorithmen wie std::inner_product verwenden. Also muss ich einen Iterator schreiben. Die operator= sollte die Ansammlung tun

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; 
} 

Antwort

0

Ihr von Wert in Ihrem Dereferenzierungsoperator Rückkehr, eine Kopie zu erstellen, was bedeutet, dass der Wert, der mehrfach zugewiesen hat eine andere Instanz für jede Aufgabe ist und nicht die Iterator-Instanz .