Błąd kompilacji z lvalue.

Błąd kompilacji z lvalue.
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
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:

Kopiuj
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?

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

jak masz zdefiniowany:

  • konstruktor kopiujacy
  • operator przypisania
    ?
twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
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:

Kopiuj
Typ operator[](...)

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

  • Rejestracja: dni
  • Ostatnio: dni
0

Problem rozwiązany, dzięki za pomoc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.