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

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

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

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

15.06.2014, 11:06. Просмотров 398. Ответов 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";
}

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 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 ]
Yandex
Объявления
15.06.2014, 11:27     Явная специализация шаблонного класса
Ответ Создать тему
Опции темы

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