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

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

Восстановить пароль Регистрация
 
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
15.06.2014, 11:06     Явная специализация шаблонного класса #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++ Явная специализация класса
явная специализация C++
C++ Явная специализация
Явная специализация шаблона C++
Явная специализация шаблона. Ошибки C++
Явная специализация шаблона C++
Явное создание экземпляра класса и явная специализация шаблона класса C++
C++ Явная специализация шаблонов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 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     Явная специализация шаблонного класса
Ответ Создать тему
Опции темы

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