Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
GArgantua777
0 / 0 / 0
Регистрация: 04.06.2015
Сообщений: 9
#1

Явная специализация шаблона

08.11.2015, 14:01. Просмотров 213. Ответов 3
Метки нет (Все метки)

Здравствуйте, подскажите, пожалуйста, почему не выполняется неявное приведение фактических параметров к формальным при вызове функции для строк и, соответственно, не компилируется код?

"Header.h"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template <class T>
int count(const int N, T * arr , T elem){
  int count = 0;
  for (int i = 0; i < N; ++i){
    if (arr[i] == elem)count++;
  }
  return count;
}
 
template <> int count <const char *>(const int N, const char ** s_arr, const char * s){
  int count = 0;
  for (int i = 0; i < N; ++i){
    if (strcmp(s_arr[i], s)==0)count++;
  }
  return count;
}
"Source.cpp"
C++
1
2
3
4
5
6
7
8
9
int main(){
 
 char * s_arr[] = {
    "one" , "two", "three"
  };
  count <const char *>(3, s_arr, "one"); //error C2664: 'int count<const char*>(const int,const char **,const char *)' : cannot convert argument 2 from 'char *[3]' to 'const char **'
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2015, 14:01
Ответы с готовыми решениями:

Явная специализация шаблона
Здравствуйте. Не совсем разобрася с сабжем. Например, если есть кусочек кода:...

Явная специализация шаблона
Столкнулся с проблемой при изучении шаблонов. Задача: написать шаблонную...

Явная специализация шаблона. Ошибки
Помогите исправить ошибки. Надо для шаблонного класса сделать специализацию...

Явная специализация шаблона класса и ее методы
На 93 строке явная специализация шаблона класса под char. Но я нигде не могу...

Явная специализация шаблона для пользовательского типа
Здравствуйте! Сразу извиняюсь если вопрос покажется глупым, перечитал...

3
ALWAYSWANNAFLY
3 / 2 / 2
Регистрация: 10.01.2014
Сообщений: 28
08.11.2015, 14:07 #2
Так Вам же пишет, почему
C++
1
//error C2664: ... cannot convert argument 2 from 'char *[3]' to 'const char **'
Вы вызываете функцию с типом второго аргумента char* , а объявлена char**
0
zss
Модератор
Эксперт С++
7102 / 6630 / 4199
Регистрация: 18.12.2011
Сообщений: 17,489
Завершенные тесты: 1
08.11.2015, 14:10 #3
C++
1
2
3
const char * s_arr[] = {
        "one" , "two", "three"
    };
0
GArgantua777
0 / 0 / 0
Регистрация: 04.06.2015
Сообщений: 9
08.11.2015, 15:13  [ТС] #4
Спасибо за ответ, но мне остается не ясно, почему невозможно преобразование char ** -> const char ** по аналогии с char * ->const char *.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2015, 15:13

Явная специализация шаблона функции - ошибка на этапе компиляции
Всем привет, читаю книгу С. Прата и пытаюсь скомпилировать шаблонную функцию с...

Error C2912: явная специализация не является специализацией функции-шаблона
Как исправить ошибку? #include &lt;iostream&gt; using namespace std; template...

Явное создание экземпляра класса и явная специализация шаблона класса
Всем добрый день! Не могу разобраться - эти две технологии дают один и тот же...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru