Russian Qt Forum
Ноябрь 24, 2024, 01:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [Решено] lvalue required as left operand of assignment - Как бороться?  (Прочитано 33251 раз)
PulSar.CE3194694
Гость
« : Август 24, 2010, 14:38 »

Вылезла данная ошибка: lvalue required as left operand of assignment. Вот здесь:
Код
C++ (Qt)
ListOfdx.value(currIndex)=dx;
ListOfdx - это список из элементов типа double. В одном месте программы пытаюсь присвоить элементу под номером currIndex величину dx (тоже double), а вылезает такая вот штука. Тоже происходит, если делать вот это:
Код
C++ (Qt)
ListOfMatrix.value(currIndex).dx()=value;
Как лечить?
« Последнее редактирование: Август 26, 2010, 10:49 от PulSar.CE3194694 » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Август 24, 2010, 14:45 »

Код:
ListOfdx[currIndex] = dx;
Записан
Sancho_s_rancho
Гость
« Ответ #2 : Август 24, 2010, 15:00 »

Попытка присвоить возвращаемому значению(rvalue).
Записан
PulSar.CE3194694
Гость
« Ответ #3 : Август 24, 2010, 15:46 »

Потрясающе! Мои знания растут! Смеющийся Смеющийся
Хм, не помню, где это было написано, чтобы писать в квадратных скобках. Или мы его просто как массив считаем? И почему .value() не подходит?)
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Август 24, 2010, 15:53 »

потому что value возвращает T а operator[] возвращает T&
Разницу чуете?
Записан
PulSar.CE3194694
Гость
« Ответ #5 : Август 24, 2010, 16:08 »

Кстати вот здесь это не прокатывает:
Код
C++ (Qt)
ListOfMatrix[currIndex].dx()=value;
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Август 24, 2010, 16:14 »

та же ошибка
Записан
PulSar.CE3194694
Гость
« Ответ #7 : Август 24, 2010, 16:18 »

Тогда как исправить?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Август 24, 2010, 16:21 »

а) добавить возвращение ссылки в dx()
б) сделать метод setDx(T value)
выбирайте. 2е более правильно
Записан
PulSar.CE3194694
Гость
« Ответ #9 : Август 24, 2010, 16:54 »

Рисовать слот ради какой-то фигни не вариант. Нужно как-то по другому. Вон в QPointF сделали же rdx(), че тут нельзя было? Злой
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #10 : Август 24, 2010, 17:58 »

вы разницу между слотом и сеттером знаете?
вообще, какие классы используются? кто такая матрица? QTransform?
« Последнее редактирование: Август 24, 2010, 18:02 от Авварон » Записан
PulSar.CE3194694
Гость
« Ответ #11 : Август 24, 2010, 20:53 »

Код
C++ (Qt)
QList<QMatrix> ListOfMatrix;
Разница? Нет. Где прочитать?
Записан
BRE
Гость
« Ответ #12 : Август 24, 2010, 20:57 »

Код
C++ (Qt)
ListOfMatrix[ currIndex ].translate( dx, dy );
 

« Последнее редактирование: Август 24, 2010, 21:14 от BRE » Записан
PulSar.CE3194694
Гость
« Ответ #13 : Август 25, 2010, 11:22 »

Как присвоить значение вот здесь:
Код
C++ (Qt)
ListOfAxisXright[CurrentIndex].p2().rx()/=LW;
Оно у меня не присваивается. Код компилируется норм. Не знаю, что делать, если писать .x(), то вылезет та самая ошибка. Причем если присваивать значение вот сюда, то оно присвоится:
Код
C++ (Qt)
ListOfValues[CurrentIndex]=SomeValue;
Т.е. если после закрывающей скобки не писать через точку методы, как, например в первом случае, то все ОК. Как быть?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #14 : Август 25, 2010, 11:27 »

выучить с++ блин! Прочтите про разницу между передачей по значению и по ссылке. Дело не в скобочках, а в том, что эти методы возвращают
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.167 секунд. Запросов: 23.