![]() |
|
Модераторы: bsa |
![]()
|
|
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: 1 Всего: 13 |
Драсте. Тут есть одна програмка: должна иметь шаблонную функцию , что принимает масив и возвращает наибольшее значение в масиве.
Так же должна быть специализация, которая принимает масив указателей на сhar и возвращает адрес самой длинной строки. Вот какраз со специализацией у меня чтото не получается, я чтото запутался. Вот что я сделал:
Подскажите как надо правильно. --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
pycha, функции специализировать не рекомендуется. Лучше сделай обычную перегрузку.
|
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: 1 Всего: 13 |
Это задача на специализацию, я ее хочу сделать для себя. Это не главное . Главная проблема что функция strlen кричит про несоотвествие типов, и в специализацию я параметры тоже параметры неверно передаю, и по неопытности никак не могу понять что не так. Вот ошибки:
g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(24) : error C2893: Failed to specialize function template 't maxs(t [],int)' With the following template arguments: 'char *[20]' g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(46) : error C2664: 'strlen' : cannot convert parameter 1 from 'char' to 'const char *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(47) : error C2664: 'strlen' : cannot convert parameter 1 from 'char' to 'const char *' --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
pycha, понимаешь в чем штука, если бы ты для начала сделал перегрузку, то было бы тебе легче найти ошибку. А ошибка заключается в том, что ты передаешь maxs не char *[], а char *[3][20], а это разные вещи. Первое - одномерный массив указателей на char, а второе - двумерный массив указателей на char.
|
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: 1 Всего: 13 |
Блин, у меня ощущение что я по пояс деревяный,- потомучто никак не могу понять как надо сделать правильно: так как передаю двухмерный масив написал в обявлении
template <> char * maxs(char * mas[][],int z) а оно в ответ еще кучу ошибок: g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(8) : error C2087: 'mas' : missing subscript g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(8) : error C2782: 't maxs(t [],int)' : template parameter 't' is ambiguous g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(7) : see declaration of 'maxs' could be 'char *' or 'char *[1]' g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(8) : error C2785: 't maxs(t [],int)' and 'char *maxs(char *[][1],int)' have different return types g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(7) : see declaration of 'maxs' g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(8) : see declaration of 'maxs' g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(8) : error C2912: explicit specialization; 'char *maxs(char *[][1],int)' is not a specialization of a function template g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(24) : error C2893: Failed to specialize function template 't maxs(t [],int)' With the following template arguments: 'char *[20]' g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(39) : error C2087: 'mas' : missing subscript g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\5\5\5.cpp(47) : error C2664: 'strlen' : cannot convert parameter 1 from 'char' to 'const char *' Понимаю что говорит что в обявлении должно быть (could be 'char *' or 'char *[1]') но как же правильно обьявить? И еще (error C2664: 'strlen' : cannot convert parameter 1 from 'char' to 'const char *') - почему говорит что ему надо 'const char *' Напишите пожалуйста как надо правильно обьявить (ибо я как об стенку горохом-ничего не доходит) --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
конечно так нельзя. нужно обязательно указывать все размерности многомерных массивов кроме последней.
Вот пример шаблона определения количества элементов в статическом массиве на этапе компиляции:
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |