Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > явная специализация шаблона


Автор: TaNK 18.11.2009, 11:52
Есть задача первую часть я сделал вот про специализацию шаблона ну ни как не получается, или Code::Blocks с MinGW не поддреживают эту специализацию
вот задание
http://ifolder.ru/15043545
а вот код что я написал, может мне кто подскажет как сделать вторую часть задания
Код

#include <iostream>

using namespace std;

template <typename T> // 1 шаблон
void maxn (T [], int);

//явная специализация
template <> void maxn (const char* [], int); // явная специализация

int main(void)
{
    int i_mas[6] = {110,-8,-9,6,77,250};
    double d_mas[4] = {10.6,18.74,998.41,651.66};
    char* c_mas[3] = {"Ivan", "Oleg","C++"};

    maxn(i_mas,6);
    maxn(d_mas,4);

    maxn(c_mas,3); // вызывается 1 шаблон почему то
    return 0;
}


template <typename T>
void maxn (T mas[], int n)
{
    int i = 1;
    T temp = mas[0];
    while (i < n)
    {
      temp = temp < mas[i]? mas[i] : temp;
      i++;
    }

    cout << temp << endl;
}

template <> void maxn (const char* mas[], int n)
{
    for(int i = 0; i < n; i++)
    cout << mas[i] << endl;

}



вторую часть я не доделал...чтобы адреса возращались...хочу понять почему не вызавается явная специализация.
Всем спасибо.

Автор: zim22 18.11.2009, 12:46
замени на
Код

const char* c_mas[3] = {"Ivan", "Oleg","C++"};

Автор: TaNK 18.11.2009, 12:57
Цитата(zim22 @ 18.11.2009,  12:46)
замени на
Код

const char* c_mas[3] = {"Ivan", "Oleg","C++"};

Спасибо, помогло.

Автор: Andrey44 18.11.2009, 13:01
Можно еще
Код

maxn((const char**)c_mas,3);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)