9 / 9 / 3
Регистрация: 09.12.2012
Сообщений: 219
1

Non-const lvalue reference to type

06.06.2015, 13:37. Показов 6876. Ответов 4
Метки нет (Все метки)

Добрый день.
Мне надо передать указатель на матрицу (Шахматная доска)
C++
1
Piece* board[8][8]
в функцию (Загрузить состояние доски из файла, т.е. придется менять объект)
C++
1
bool Load(Piece& board);
Ошибка
C++
1
non-const lvalue reference to type 'Piece' cannot bind to a value of unrelated type 'Piece *[8][8]'|
Я погуглил и не очень понял, говорят что в MSVC можно ?отключать? такое. Но у меня компилятор Clang, но могу поменять на GCC если это сильно зависит от компилятора.
Спасибо!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2015, 13:37
Ответы с готовыми решениями:

RVALUE Ссылка, error: cannot bind non-const lvalue reference of type 'String&' to an rvalue of type 'String'|
Код не компилируется ниже 17 стандарта с++ с ошибкой error: cannot bind non-const lvalue reference...

Странная ошибка invalid initialization of non-const reference of type 'std::vector<oneVec>::iterator&
Пишу я значит двухмерный вектор, решаю проверить наличие ошибок(я просто компилирую) и выдают такую...

Ошибка: cannot bind non-const lvalue reference of type 'double&' to an rvalue of type 'double' - почему?
Всем привет! В программе вызываю функцию: UpdateEditControl(IDC_EDIT7,...

Ошибка: Binding 'const Ship' to reference of type 'Ship&' discard qualifiers. Не пойму, где теряется const
есть public метод класса с квалификатором const тип _ships - QMultiMap QMultiMap имеет...

4
15050 / 8069 / 1940
Регистрация: 30.01.2014
Сообщений: 13,684
06.06.2015, 13:42 2
Цитата Сообщение от Warezovvv Посмотреть сообщение
Я погуглил и не очень понял, говорят что в MSVC можно ?отключать? такое. Но у меня компилятор Clang, но могу поменять на GCC если это сильно зависит от компилятора.
Спасибо!
Ничего не надо отключать. Нужно делать правильно. У тебя типы не соответствуют.
Передавать указатель на массив
C++
1
bool Load(Peace (*board)[8][8]);
Или ссылку на массив
C++
1
bool Load(Peace (&board)[8][8]);
1
9 / 9 / 3
Регистрация: 09.12.2012
Сообщений: 219
06.06.2015, 13:50  [ТС] 3
Спасибо. Но немного не понял. Почему мы в скобки заключаем и ?разыменовываем? ? Так же как сделать независимо от количества элементов?
0
15050 / 8069 / 1940
Регистрация: 30.01.2014
Сообщений: 13,684
06.06.2015, 13:58 4
Лучший ответ Сообщение было отмечено Warezovvv как решение

Решение

Цитата Сообщение от Warezovvv Посмотреть сообщение
Почему мы в скобки заключаем и ?разыменовываем? ?
Это не разыменование. Здесь звездочка - это определение типа указателя (значение звездочки в коде зависит от контекста применения, если мы определяем переменную, то звездочка перед ней обозначает тип указателя, а если работаем с уже определенной переменной (указателя), это это разыменование). А скобки нужны, чтобы определить, что это не просто указатель, а именно указатель на массив (более детальное объяснения я думаю пока что будет лишним, но если интересно, то вот).

Добавлено через 1 минуту
Цитата Сообщение от Warezovvv Посмотреть сообщение
Так же как сделать независимо от количества элементов?
Если на этапе компиляции, то шаблоном.
C++
1
2
template <size_t F, size_t S>
bool Load(Peace (&board)[F][S]);
1
528 / 430 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
06.06.2015, 14:02 5
C++
1
2
3
4
Piece* board[8][8]
bool Load(Piece* board[][8]);
...
Load(board);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2015, 14:02

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Ошибка приведения типов: E2357 Reference initialized with 'bool', needs lvalue of type 'bool'
Подскажите решение проблемы, программа на rad studio2010, проблема в этой строке ...

Cannot convert ‘& a’ (type ‘A*’) to type ‘const QObject*’
Извиняюсь за глупый вопрос. Где я что делаю не так? Хочу вывести выхлоп дочернего процесса на...

Особенности хранения value type и reference type
Всем известно, что значимые типы хранятся в стеке(смутно представляю, что он из себя представляет,...

Const, pointers, reference
const int&amp; const ref1; const int &amp;ref1; int const &amp;ref1; Во всех случаях это константная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.