Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
GArgantua777
0 / 0 / 0
Регистрация: 04.06.2015
Сообщений: 9
#1

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

08.11.2015, 14:01. Просмотров 204. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Явная специализация шаблона (C++):

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

Явная специализация шаблона - C++
Здравствуйте. Не совсем разобрася с сабжем. Например, если есть кусочек кода: template &lt;typename T&gt; void func(T &amp;blue, T &amp;red); ...

Явная специализация шаблона. Ошибки - C++
Помогите исправить ошибки. Надо для шаблонного класса сделать специализацию float #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Явная специализация шаблона класса и ее методы - C++
На 93 строке явная специализация шаблона класса под char. Но я нигде не могу найти, как мне правильно записать методы для него. Если тело...

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

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

3
ALWAYSWANNAFLY
3 / 2 / 1
Регистрация: 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
Модератор
Эксперт С++
6928 / 6490 / 2182
Регистрация: 18.12.2011
Сообщений: 17,105
Завершенные тесты: 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: явная специализация не является специализацией функции-шаблона - C++
Как исправить ошибку? #include &lt;iostream&gt; using namespace std; template &lt;typename t&gt; void PrintArray(t *arr, const int size) ...

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

явная специализация - C++
нужно реализовать специализацию по шаблону. Специализация должна принимать массив строк, и вернуть наибольшую строку. template...

Явная специализация - C++
Здрасти, Народ. Подскажите плз в чем преимущество явной специализации перед перед обычным применением перегруженной функции. Привожу...


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

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

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