Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2011, 14:37   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Ошибка со статическим char[]

Работаю с классами, а точнее с наследниками.
Есть класс-родитель Дата-Время.
Наследник - класс в котором время храниться строкой. т.е например "00:00:00" и представляет из себя массив char размерностью 9.

Начал делать конструкторы для наследника:

Объявление:
Код:
class StringData: public Data{
	char string[9];
public:
	StringData();
	~StringData();
	StringData(char[9]);
};
при попытке в методах написать строчку.
string="00:00:00"

вылазит ошибка: cannot convert from 'const char [9]' to 'char [9]'

WTF??
pinkiller вне форума Ответить с цитированием
Старый 01.12.2011, 14:56   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Массивы нельзя присваивать друг другу.
То есть
Код:
T a[x];
T b[x];
a = b; // Ошибка
где T любой тип.

Если вы пищите на C++ - используйте std::string
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 01.12.2011, 15:00   #3
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

используйте для присвоения функцию strcpy(string,"00:00:00");
revaldo666 вне форума Ответить с цитированием
Старый 01.12.2011, 15:06   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от revaldo666 Посмотреть сообщение
используйте для присвоения функцию strcpy(string,"00:00:00");
Функция strcpy() первым аргументом принимает char*, а не const char*
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 01.12.2011, 15:16   #5
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Функция strcpy() первым аргументом принимает char*, а не const char*
а какая разница если присвоение в строку заданную в этом условии происходит нормально.
у него же обьявлена строка ка char * string [9];
revaldo666 вне форума Ответить с цитированием
Старый 01.12.2011, 19:52   #6
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Возникла другая ошибка.

Я объявляю char string[9], если я не ошибаюсь, то я инициализирую массив типа чар под 9 символов включая символ окончания строки, но когда я смотрю отладчиком что у меня там находиться я вижу свои 00:00:00MMMMMMMMMMMM, вот эти куча M это за лажа?
pinkiller вне форума Ответить с цитированием
Старый 02.12.2011, 13:15   #7
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от pinkiller Посмотреть сообщение
Работаю с классами, а точнее с наследниками.
Есть класс-родитель Дата-Время.
Наследник - класс в котором время храниться строкой. т.е например "00:00:00" и представляет из себя массив char размерностью 9.

Начал делать конструкторы для наследника:

Объявление:
Код:
class StringData: public Data{
	char string[9];
public:
	StringData();
	~StringData();
	StringData(char[9]);
};
при попытке в методах написать строчку.
string="00:00:00"

вылазит ошибка: cannot convert from 'const char [9]' to 'char [9]'

WTF??
Сначала объясню смысл этого сообщения об ошибке. Компилятор ясно сговорит, что он не может присвоить один массив, тип которого const char[9], а это строковый литерал "00:00:00" вашему массиву string, который имеет тип char[9]. То есть в любом случае в С/С++ нет встроенной операции присваивания массивов.
Поэтому вам надо было заисать

strcpy( string, "00:00:00" );

при этом естественно должно быть объявление char string[9].
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка cannot convert from 'char *' to 'char [100]' Stellvertreter Общие вопросы C/C++ 5 30.05.2010 00:02
Ошибка c AnsiChar & Char Яр|/||< (^_^) Общие вопросы Delphi 3 19.02.2010 21:22
Нужен совет по Статическим Обьектам lex0rg Общие вопросы C/C++ 2 14.11.2009 14:20
работа со статическим органом управления nevidimka Win Api 3 28.10.2009 08:02
sql запрос с не статическим параметром? Geddar Помощь студентам 8 25.05.2008 10:13