Название: Не получается изменить значение переменной Отправлено: Егор от Декабря 24, 2014, 18:28 Всё это, конечно, очень смешно, но не могу изменить значение private переменной.
Есть класс Element, в котором объявлены private переменные: Код: private: Код: elements.insert(0, Element(2, 5, 1)); Код: void setX(int value); Название: Re: Не получается изменить значение переменной Отправлено: gil9red от Декабря 24, 2014, 18:33 А покажите get-функцию
Название: Re: Не получается изменить значение переменной Отправлено: Егор от Декабря 24, 2014, 18:38 А покажите get-функцию Код: int Element::getX(){ Я даже пытался отправить туда просто число. Это тоже не сработало. Название: Re: Не получается изменить значение переменной Отправлено: kambala от Декабря 24, 2014, 18:40 snake->getElement(i) возвращает копию объекта Element
Название: Re: Не получается изменить значение переменной Отправлено: Егор от Декабря 24, 2014, 18:43 snake->getElement(i) возвращает копию объекта Element Через указатель сделать, или просто сделать список public и обращаться непосредственно к элементу списка?P.S указатель не дал результата, хотя, скорее всего, я где-то опять ошибся. Название: Re: Не получается изменить значение переменной Отправлено: kambala от Декабря 24, 2014, 19:34 через указатель должно правильно работать. можешь и класс змеи показать.
Название: Re: Не получается изменить значение переменной Отправлено: Егор от Декабря 24, 2014, 19:42 через указатель должно правильно работать. можешь и класс змеи показать. Код: #ifndef SNAKE_H Название: Re: Не получается изменить значение переменной Отправлено: kambala от Декабря 24, 2014, 19:43 Element *Snake::getElement(int index){
return elements[index]; } Название: Re: Не получается изменить значение переменной Отправлено: Егор от Декабря 24, 2014, 19:55 Element *Snake::getElement(int index){ Большое спасибо, всё нормально работает. А подобное написание метода я вообще видел впервые, так что за новые знания тоже спасибо.return elements[index]; } Название: Re: Не получается изменить значение переменной Отправлено: kambala от Декабря 24, 2014, 19:58 тут же ничего такого нету: просто возвращаешь указатель на элемент. можно например и так писать: Element* Snake::getElement(int index){
Название: Re: Не получается изменить значение переменной Отправлено: Егор от Декабря 25, 2014, 18:22 тут же ничего такого нету: просто возвращаешь указатель на элемент. можно например и так писать: Element* Snake::getElement(int index){ Ну, просто раньше как-то не приходилось возвращать указатели. А сам я пробовал вернуть, написав *elements[index].Название: Re: Не получается изменить значение переменной Отправлено: gil9red от Декабря 25, 2014, 18:30 тут же ничего такого нету: просто возвращаешь указатель на элемент. можно например и так писать: Element* Snake::getElement(int index){ Ну, просто раньше как-то не приходилось возвращать указатели. А сам я пробовал вернуть, написав *elements[index].Через * возвращалась копия объекта. У вас в списке хранятся указатели на объект, поэтому * была лишняя. Да и семантика функции подразумевала возврат объекта, а не указателя на него :) Название: Re: Не получается изменить значение переменной Отправлено: Егор от Декабря 26, 2014, 15:34 тут же ничего такого нету: просто возвращаешь указатель на элемент. можно например и так писать: Element* Snake::getElement(int index){ Ну, просто раньше как-то не приходилось возвращать указатели. А сам я пробовал вернуть, написав *elements[index].Через * возвращалась копия объекта. У вас в списке хранятся указатели на объект, поэтому * была лишняя. Да и семантика функции подразумевала возврат объекта, а не указателя на него :) |