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

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

Войти
Регистрация
Восстановить пароль
 
Vartashezik
Сообщений: n/a
#1

Шаблоны функции - C++

24.04.2013, 15:15. Просмотров 238. Ответов 3
Метки нет (Все метки)

Делаю задание по программированию, нужна явная специализация шаблона.
Пишет ошибку:
obj\Debug\main.o||In function `main':|
C:\Users\sklad\Documents\CODEBLOCK\work8.6\main.cpp|16|undefined reference to `int maxn<int>(int*, int)'|
C:\Users\sklad\Documents\CODEBLOCK\work8.6\main.cpp|17|undefined reference to `double maxn<double>(double*, int)'|
C:\Users\sklad\Documents\CODEBLOCK\work8.6\main.cpp|18|undefined reference to `char const* maxn<char const*>(char const**, int)'|
||=== Build finished: 3 errors, 0 warnings (0 minutes, 0 seconds) ===|


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <cstring>
 
using namespace std;
 
template <class T>
T maxn(T arr[],int n);
 
template <> char * maxn<char*>(char* arr[], int n);
 
int main()
{
    int numbers_i[6] = {4,3,5,6,1,8};
    double numbers_d[4] = {24.42,13.4,0,-64.6542};
    const char* numbers_pc[5] = {"goga chmo_))", "Vano orex", "Dillo deeepth", "1234567890", "Ia baklagan!" };
    cout << "Max int: " << maxn(numbers_i, 6) << endl;
    cout << "Max double: " << maxn(numbers_d, 4) << endl;
    cout << "Max length string: " << maxn(numbers_pc, 5) << endl;
 
 
 
    return 0;
}
 
template <class T>
T max5(T arr[], int n)
{
    T max_dig = arr[0];
    for (int i = 1; i < n; i++)
    {
        max_dig = max_dig > arr[i] ? max_dig : arr[i];
    }
    return max_dig;
}
 
 
template <> char * maxn<char*>(char* arr[], int n)
{
    char * pc = arr[0];
    for (int i = 1; i < n; i++)
    {
        pc = strlen(pc) > strlen(arr[i]) ? pc : arr[i];
 
    }
    return pc;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 15:15     Шаблоны функции
Посмотрите здесь:

C++ Шаблоны функции
шаблоны функции C++
C++ Шаблоны функции
C++ Функции-шаблоны
C++ Функции-шаблоны
C++ Функции-Шаблоны в С++
C++ Шаблоны функции
Шаблоны функции C++
C++ Шаблоны функции | C++
Шаблоны функции | C++ C++
Шаблоны функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
24.04.2013, 18:20     Шаблоны функции #2
Vartashezik,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <cstring>
 
using namespace std;
 
template <class T>
T* maxn(T *arr,int n);
 
template <>
char** maxn<char*>(char **arr, int n);
 
int main()
{
    int numbers_i[6] = {4,3,5,6,1,8};
    double numbers_d[4] = {24.42,13.4,0,-64.6542};
    char* numbers_pc[] = {"goga chmo_))", "Vano orex", "Dillo deeepth", "1234567890", "Ia baklagan!" };
    cout << "Max int: " << *maxn(numbers_i, 6) << endl;
    cout << "Max double: " << *maxn(numbers_d, 4) << endl;
    cout << "Max length string: " << *maxn(numbers_pc, 5) << endl;
 
    return 0;
}
 
template <class T>
T* maxn(T *arr, int n)
{
    T *max_dig = arr;
    for (int i = 1; i < n; i++)
    {
        max_dig[i] = max_dig[i] > arr[i] ? max_dig[i] : arr[i];
    }
    return max_dig;
}
 
 
template <> 
char ** maxn<char*>(char** arr, int n)
{
    char ** pc = arr;
    for (int i = 1; i < n; i++)
    {
        pc[i] = pc[i] > arr[i] ? pc[i] : arr[i];
 
    }
   return static_cast<char **>(pc);
}
Vartashezik
Сообщений: n/a
24.04.2013, 20:13     Шаблоны функции #3
А зачем мне возвращать указатель и потом его разыменовывать, если можно сразу вернуть значение ?
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
24.04.2013, 21:44     Шаблоны функции #4
Vartashezik, я исправил ошибки, сделайте как вам нравится.
Yandex
Объявления
24.04.2013, 21:44     Шаблоны функции
Ответ Создать тему
Опции темы

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