Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/107: Рейтинг темы: голосов - 107, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 7

Incompatible types in assignment (Прошу пнуть в нужную сторону)

20.02.2016, 23:46. Показов 21810. Ответов 13

Студворк — интернет-сервис помощи студентам
Может быть, дело в том, что уже вечер и плохо соображаю, но никак не дается...

Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    struct Camel{
        int horns, legs;
        char name[10];
        
        Camel *mother, *father;
    } cour, nari;
    
    cour.legs = 4;
    cour.name = "Loshak";
    nari.name = "Narciss";
    cour.mother = &nari;
 
    cout << "Camel's mother: " << cour.mother->name << endl;
Ожидаемый результат: Camel's mother: Narciss
Фактический результат:
[Error] incompatible types in assignment of 'const char [7]' to 'char [10]' // строка 9
[Error] incompatible types in assignment of 'const char [8]' to 'char [10]' // строка 10


Вопрос: такое присвоение некорректно? Надо через strncpy() делать или что-то упустил?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2016, 23:46
Ответы с готовыми решениями:

Ошибка в работе с файлами: error: incompatible types in assignment of ‘char*’ to ‘char* [255]’
Суть задания Есть файл допустим 1.txt нужно выполнить обработку этого файла а результат вывести в этот же файл с другим расширением ...

Error: incompatible types in assignment of 'const char [5]' to 'char [10]'
Код: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; const int m = 10; class name {

Incompatible types in assignment of 'double' to 'float [11]'
Написал небольшую прогу, но компилятор на нее ругается, я именно на float, долго думал, не могу понять что здесь не так. Цель- вывести на...

13
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
20.02.2016, 23:49
C++
1
strcpy(cour.name, "Loshak") ;
1
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 7
20.02.2016, 23:54  [ТС]
Всё-таки strcpy, спасибо!

Хотя и не понятно, почему присваивание не работает.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
21.02.2016, 00:57
Цитата Сообщение от Polis_police Посмотреть сообщение
Хотя и не понятно, почему присваивание не работает.
Почему, по-твоему, оно должно работать?
0
 Аватар для Nosey
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
21.02.2016, 01:03
Цитата Сообщение от Polis_police
(Прошу пнуть в нужную сторону)
Используйте std::string
0
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 7
21.02.2016, 01:10  [ТС]
Я считал, что должно работать, потому что:

а) в книжке, по которой я изучаю язык ("Программирование на С/С++", Т.А. Павловская) такое присваивание указано в примере
б) опираясь на опыт РНР и ожидаемый результат (хотя это тут и не применимо, но привычки есть привычки)
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
21.02.2016, 01:20
Цитата Сообщение от Polis_police Посмотреть сообщение
такое присваивание указано в примере
Можно пример увидеть?
0
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 7
21.02.2016, 01:25  [ТС]
Текст учебника передрали здесь.

C++
1
2
3
4
5
6
7
8
9
struct Worker{
char fio[30];
int date, code;
double salary;
};
 
Worker worker, staff[100], *ps;
 
worker.fio = "Страусенко";
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
21.02.2016, 01:33
Цитата Сообщение от Polis_police Посмотреть сообщение
в книжке, по которой я изучаю язык ("Программирование на С/С++", Т.А. Павловская) такое присваивание указано в примере
Книжку - в топку.
0
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 7
21.02.2016, 01:35  [ТС]
Если не сложно, объясните - почему не корректно такое присваивание. Из-за того, что char[10] - массив?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
21.02.2016, 02:19
Из-за того, что name - имя массива (non-modifiable lvalue).
0
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 7
21.02.2016, 22:35  [ТС]
То есть вы хотите сказать, что когда пишешь

C++
1
2
int num;
num = 453;
то компилятор понимает, что я хочу переписать значение ячейки памяти на "12", а когда пишешь

C++
1
2
char stroka[10];
stroka = "somestring";
то он не понимает, что надо записать символов вместо существующих (и далее надо действовать с ним как с массивом или строковыми функциями) ?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
21.02.2016, 23:15
Цитата Сообщение от Polis_police Посмотреть сообщение
то он не понимает, что надо записать символов вместо существующих (и далее надо действовать с ним как с массивом или строковыми функциями) ?
Компилятор понимает так, как ему предписано понимать. Имя массива - non-modifiable lvalue, значит нельзя ему что-то присваивать.
То что ты хочешь, делается так:
C++
1
2
3
4
char stroka[11] = "somestring"; // строковый литерал копируется в массив (не забыть место под '\0' выделить)
// или так
char stroka[11];
strcpy(stroka, "somestring");
1
0 / 0 / 0
Регистрация: 20.02.2016
Сообщений: 7
21.02.2016, 23:18  [ТС]
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2016, 23:18
Помогаю со студенческими работами здесь

Assignment from incompatible pointer type
assignment from incompatible pointer type #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include&lt;string.h&gt; typedef struct{ char...

Assignment from incompatible pointer type
В переменной &quot;a&quot; хочу хранить ссылки на адреса памяти значений val. Но выдает ошибки. #include &lt;stdio.h&gt; #include...

Ошибка компиляции: error: assignment between incompatible sets
Кто-нибудь знает как исправить эту ошибку? ps2\sr.pas:13: error: assignment between incompatible sets PROGRAM Sr(INPUT, OUTPUT); ...

Incompatible types
program Project2; {$APPTYPE CONSOLE} uses SysUtils; var x,y,z,a:Integer; begin Readln(x,y); a:=0;

incompatible types
Помогите, пожалуйста, разобраться: public static boolean isPrime(int n) { for (int i = 2; i &lt; 100; i++) { if (n...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru