30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
||||||
1 | ||||||
Ошибка C2106.20.09.2011, 23:20. Показов 9629. Ответов 39
Метки нет (Все метки)
Здравствуйте, при попытке символьному элементу структуры (char name [30]) присвоить такой же символьный элемент выдается ошибка C2106 - левый операнд должен быть левосторонним значением. Вот фрагмент листинга, на всякий случай с описанием самой структуры:
0
|
20.09.2011, 23:20 | |
Ответы с готовыми решениями:
39
Выдает: Ошибка C2296 Ошибка C2106 Error C2106 как обойти? Error C2106: '=' : left operand must be l-value Error C2106: '=' : left operand must be l-value |
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
20.09.2011, 23:38 | 3 |
name - это указатель на строку.
Вы присваиваете указателю указатель, а указатель min.name является константным, т.е. его нельзя изменить.
0
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
20.09.2011, 23:39 [ТС] | 4 |
Сейчас попробую...
0
|
talis
|
20.09.2011, 23:40
#5
|
0
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
20.09.2011, 23:41 [ТС] | 6 |
Chelioss, так а как тогда? Через copy, как сказал talis?
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
20.09.2011, 23:41 | 7 |
Не правильно. name - это указатель на массив, причем name - это константный указатель.
0
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
20.09.2011, 23:41 [ТС] | 8 |
Да, кстати, не заметил, это символьный массив.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
20.09.2011, 23:42 | 9 |
0
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
20.09.2011, 23:43 [ТС] | 10 |
Ну это не есть хорошо, т.к. у меня массив из структур, а мне его надо отсортировать, и для каждого MasList[i].name писать вручную.... Можно с ума сойти..
0
|
20.09.2011, 23:44 | 11 |
Chelioss, где он объявлен как указатель?
min - это объект типа List. В struct List есть объявление char name [30];. Соответственно, min.name - массив char из 30 элементов. Добавлено через 24 секунды Не имеет смысла. Есть библиотечные функции для копирования строк и памяти.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||||||
20.09.2011, 23:46 | 12 | |||||
Можно самому написать функцию подобной strcpy. Ну или используйте strcpy.
Добавлено через 1 минуту
0
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
20.09.2011, 23:48 [ТС] | 13 |
Не совсем понял с пунктом 1
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||||||
20.09.2011, 23:50 | 15 | |||||
Вы про
name имеет тип const char *, поэтому его можно присвоить другому указателю.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
20.09.2011, 23:52 | 17 |
А что такое name? без []? Он по вашему мнению вообще не существует без []. А со [] - это всего лишь i-тый символ, а не массив.
0
|
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
|
|
20.09.2011, 23:54 [ТС] | 18 |
char *ptr = name;
Получается, мы символьному указателю ptr присваиваем адрес первого элемента массива?
0
|
20.09.2011, 23:55 | 19 |
Chelioss, по моему мнению (и позвольте мне самому его высказывать), name без [] - это массив из 30-ти char, как и объявлено выше. А к указателю оно приводится автоматически благодаря приведению типов.
Добавлено через 24 секунды Да. Адрес первого элемента массива name.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
20.09.2011, 23:59 | 20 |
talis
Так мы ни к чему и не придем. Нужно какое-то доказательство.
0
|
20.09.2011, 23:59 | |
20.09.2011, 23:59 | |
Помогаю со студенческими работами здесь
20
error C2106: '=' : left operand must be l-value выдаёт ошибку на сортировку Функция swap. error C2106: =: левый операнд должен быть левосторонним значением Error C2106 или error C2440 Ошибка компилятора C2106 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |