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

Синтаксис определения метода специализии шаблона класса. - C++

Восстановить пароль Регистрация
 
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.01.2012, 04:02     Синтаксис определения метода специализии шаблона класса. #1
Есть некий шаблон класса: template <typename T1, typename T2, typename T3> class А { };
Есть специализация этого шаблона и в нём некий метод: template <> class A <int, double, char> { ... void show(); };
Какой синтаксис использовать для записи определения метода show() в VC++ 2010 Express?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2012, 04:02     Синтаксис определения метода специализии шаблона класса.
Посмотрите здесь:

C++ Вызов метода класса без создания экземпляра класса.
Оптимизация работы метода класса с объектами класса [C++] C++
C++ Передача метода класса в качестве параметра для метода другого класса
Вызов метода внутреннего класса методом внешнего класса C++
C++ Определение метода-шаблона за пределами шаблона класса
C++ Вынос реализации метода шаблона класса в другой файл
Переопределение метода класса-шаблона C++
C++ Функция - метода класса для определения совпадения имени человека с некоторым заданным

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.01.2012, 04:19     Синтаксис определения метода специализии шаблона класса. #2
Вы об этом?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
 
template<typename T1, typename T2>
class Foo
{
public:
    void func() const;
};
 
template<typename T1, typename T2>
void Foo<T1, T2>::func() const
{
    std::cout << "Foo<T1, T2>::func()" << std::endl;
}
 
template<>
class Foo<int, int>
{
public:
    void func() const;
};
 
void Foo<int, int>::func() const
{
    std::cout << "Foo<int, int>::func()" << std::endl;
}
 
int main()
{
    Foo<double, char> f1;
    Foo<int, int> f2;
    
    f1.func();
    f2.func();
    
    return 0;
}
Добавлено через 2 минуты
Только вот я не вижу смысла описывать метод вне класса. Шаблоны всё равно не разнести по файлам определения и инициализации. Описывали бы внутри класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
 
template<typename T1, typename T2>
class Foo
{
public:
    void func() const
    {
        std::cout << "Foo<T1, T2>::func()" << std::endl;
    }
};
 
template<>
class Foo<int, int>
{
public:
    void func() const
    {
        std::cout << "Foo<int, int>::func()" << std::endl;
    }
};
 
int main()
{
    Foo<double, char> f1;
    Foo<int, int> f2;
    
    f1.func();
    f2.func();
    
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.01.2012, 06:07  [ТС]     Синтаксис определения метода специализии шаблона класса. #3
Благодарю! Меня вот это интересовало:
void Foo<int, int>::func() const
{
std::cout << "Foo<int, int>::func()" << std::endl;
}

...Шаблоны всё равно не разнести по файлам определения и инициализации...
Специализацию-то можно. Но это другая тема. Вот здесь я это выяснял Как правильно разделить файл в шаблонами? Ещё раз благодарю!
Yandex
Объявления
25.01.2012, 06:07     Синтаксис определения метода специализии шаблона класса.
Ответ Создать тему
Опции темы

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