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

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

Войти
Регистрация
Восстановить пароль
 
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
#1

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

15.06.2014, 11:06. Просмотров 489. Ответов 1
Метки нет (Все метки)

Всем привет, не могу разобраться с определением функций-членов для явной специализации
Имеем след. код:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <class Type>
class A
{
    Type n;
public:
    explicit A(Type);
    void show();
};
 
template <>class A <int>
 
{
    int n;
public:
    explicit A(int);
    void show();
};


Определение для общего шаблона:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
template <class Type>
A<Type>::A(Type s)
{
    n = s;
    std::cout << "const all\n";
}
template <class Type>
void A<Type>::show()
{
    std::cout << "Type all\n";
}

А как должно выглядеть определение для специализации ?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2014, 11:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Явная специализация шаблонного класса (C++):

Явная специализация класса - C++
Код переписан из книги, однако не компилируется. Что не так со специализацией класса? // Явная специализация класса. #include...

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

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

Специализация шаблонного класса - C++
Здравствуйте ! Задача: нужно &quot;вытянуть&quot; тип переменной из списка аргументов конструктора (см. текст). Возможно ли, вообще, такое ?...

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

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

1
Croessmah
Пришел
Эксперт CЭксперт С++
13771 / 7852 / 894
Регистрация: 27.09.2012
Сообщений: 19,269
Записей в блоге: 3
Завершенные тесты: 1
15.06.2014, 11:27 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
A<int>::A(int)
{
//...
}
 
void A<int>::show()
{
//...
}
Добавлено через 7 минут
Цитата Сообщение от 14.7.3/5
A member of an explicitly specialized class is not implicitly instantiated from the member declaration of the class template; instead, the member of the class template specialization shall itself be explicitly defined. In this case, the definition of the class template explicit specialization shall be in scope at the point of declaration of the explicit specialization of the member. The definition of an explicitly specialized class is unrelated to the definition of a generated specialization. That is, its members need not have the same names, types, etc. as the members of a generated specialization. Definitions of members of an explicitly specialized class are defined in the same manner as members of normal classes, and not using the syntax for explicit specialization.
[ Example:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template<class T> struct A {
   void f(T) { /*...*/ }
};
 
template<> struct A<int> {
   void f(int);
};
 
 
void h() {
   A<int> a;// A<int>::f must be defined somewhere
   a.f(16);
}
 
// explicit specialization syntax not used for a member of
// explicitly specialized class template specialization
void A<int>::f(int) { /*...*/ }
— end example ]
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2014, 11:27
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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