Выражение должно быть изменяемым lvalue (передача указателя в функцию) - PullRequest
0 голосов
/ 18 апреля 2019

Я создал простую функцию для замены двух пикселей в C++/SFML, взяв два пиксельных индекса и указатель на массив пикселей.

Я получаю сообщение об ошибке "Expression must be a modifiable lvalue".

typedef unsigned int uint;
void swapPixels(uint idx1, uint idx2, const sf::Color *pxColorBuffer){
    sf::Color temp = pxColorBuffer[idx1];
    pxColorBuffer[idx1] = pxColorBuffer[idx2];
    pxColorBuffer[idx2] = temp;
}

Мне интересно, почему это не работает, так как я передаю указатель, который должен указывать на изменяемое значение.

1 Ответ

0 голосов
/ 18 апреля 2019

Если вы читаете об указателях, вы должны заметить, что

const TYPE *, известный как TYPE const *, является типом указателя, который указывает на неизменяемый объект TYPE.Сам указатель может быть изменен, но значение, на которое он указывает, не может.

TYPE * const - это тип указателя, который указывает на модифицируемый объект TYPE, но в этом случае указатель не может бытьизменено.

const TYPE * const, известное как TYPE const * const, является типом указателя, который указывает на неизменяемый объект TYPE и не может быть изменен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...