Błąd kompilacji z lvalue.

0

Witam, mam problem z kompilacją kodu. Funkcja wygląda tak:

Wektor<2> Macierz::operator*(Wektor<2> W){
    Wektor<2> Wek;

    Wek[0] = this->Mac[0][0] * W[1] + this->Mac[0][1] * W[1];
    Wek[1] = this->Mac[1][0] * W[0] + this->Mac[1][1] * W[1];

    return Wek;
} 

a problem z kompilacja jest taki:

src/Macierz.cpp: In member function ‘Wektor<2> Macierz::operator*(Wektor<2>)’:
src/Macierz.cpp:19:9: error: lvalue required as left operand of assignment
  Wek(0) = this->Mac[0][0] * W[1] + this->Mac[0][1] * W[1];
         ^
src/Macierz.cpp:20:9: error: lvalue required as left operand of assignment
  Wek[1] = this->Mac[1][0] * W[0] + this->Mac[1][1] * W[1];
         ^
make: *** [obj/Macierz.o] Błąd 1

i nie bardzo rozumiem o co chodzi. Po lewej stronie mam zmienna do ktorej przypisywanie sa wartosci, w czym leży błąd?

1

jak masz zdefiniowany:

  • konstruktor kopiujacy
  • operator przypisania
    ?
1

Kompilator twierdzi, że po lewej stronie przypisania wcale nie ma zmiennej. Wróżąc z fusów, to pewnie zadeklarowałeś operator[] w ten sposób:

Typ operator[](...)

czyli zwraca tymczasowy obiekt, do którego nie wolno przypisać wartości.

0

Problem rozwiązany, dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0