Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fooly
 Аватар для Fooly
21 / 17 / 1
Регистрация: 26.03.2012
Сообщений: 147
#1

Ошибка с преобразованием char - C++

17.07.2012, 00:51. Просмотров 332. Ответов 5
Метки нет (Все метки)

В задачке дана структура и проттотип функции. Функция должна присваивать имя структуре. Но мне выдаёт ошибку:
невозможно преобразовать "const char *" в "char [40]"
структура:
C++
1
2
3
4
5
struct golf
{
    char fullname[Len];
    int handicap;
};
функция
C++
1
2
3
4
void setgolf(golf & g,const char * name, int hc)
{
g.fullname=name;
g.handicap=hc;}
Пытался менять на char name, char name [40] и др. - результат 1 и тот же
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2012, 00:51     Ошибка с преобразованием char
Посмотрите здесь:

ошибка преобразования char C++
Ошибка в char... C++
C++ Ошибка: "invalid conversion from char* to char"
Ошибка присваивания СString char C++
C++ Ошибка при работе с массивами char
C++ C++ ошибка "Cannot convert 'char *' to char"
C++ Ошибка Operator= char []
C++ Ошибка? Сравнение char с eof
C++ Ошибка c char в классе
Return char* непонятная ошибка C++
C++ Массивы char. В чем ошибка?
Ошибка с распознаванием строки на русском языке и преобразованием ее C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
17.07.2012, 00:59     Ошибка с преобразованием char #2
Цитата Сообщение от Fooly Посмотреть сообщение
g.fullname=name
fullname - это грубо говоря реальный массив
присвоение массиву значения указателя - не имеет смысла
тут вы должны скопировать содержание этого указателя в массив
делается это так
C
1
2
3
strcpy (g.fullname, name); // опасный вариант, может быть переполнение массива, если имя слишком длинное
memcpy (g.fullname, name, strlen(name) + 1); // копирование с точки зрения данных, опасно по той же причине
snprintf (g.fullname, 40, "%s", name); // безопасный вариант
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.07.2012, 01:05     Ошибка с преобразованием char #3
Удалил.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
17.07.2012, 01:46     Ошибка с преобразованием char #4
Цитата Сообщение от Fooly Посмотреть сообщение
g.fullname=name;
можно в принципе(но это не значит,что это хорошо) использовать const_cast
C++
1
g.fullname = const_cast<char *>(name);
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
17.07.2012, 02:05     Ошибка с преобразованием char #5
alexey31415, и? код от этого стал рабочим чтоли?
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.07.2012, 02:11     Ошибка с преобразованием char #6
Цитата Сообщение от alexey31415 Посмотреть сообщение
1 g.fullname = const_cast<char *>(name);
Компилятор не пропускает, да и смысл? Как правильно написал alex_x_x, в массив нужно копировать.
Yandex
Объявления
17.07.2012, 02:11     Ошибка с преобразованием char
Ответ Создать тему
Опции темы

Текущее время: 06:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru