50 / 31 / 4
Регистрация: 25.04.2013
Сообщений: 366
1

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

15.06.2014, 11:06. Показов 1596. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2014, 11:06
Ответы с готовыми решениями:

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

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

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

Явная специализация для friend функции класса
Как создать специализацию для какого-то конкретного типа на примере данной функции? template...

1
Неэпический
17850 / 10618 / 2049
Регистрация: 27.09.2012
Сообщений: 26,689
Записей в блоге: 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
15.06.2014, 11:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2014, 11:27
Помогаю со студенческими работами здесь

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

Специализация методов шаблонного класса
Вот шаблонный класс матрицы из объектов типа параметра-шаблона, нужна специализация для типа...

Явная специализация
// Выдержка из книги Стивен прата С++ // В следующем примере первый вызов функции Swap()...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru