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

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

Войти
Регистрация
Восстановить пароль
 
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
#1

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

25.01.2012, 04:02. Просмотров 742. Ответов 2
Метки нет (Все метки)

Есть некий шаблон класса: 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++ Непонятный синтаксис typedef в параметрах шаблона
C++ Вызов метода класса без создания экземпляра класса.
Обработка метода класса в зависимости от типа данного класса C++
Вызов метода внутреннего класса методом внешнего класса C++
C++ Не удается обратиться к свойству класса из метода класса
Оптимизация работы метода класса с объектами класса [C++] C++
C++ Методы класса внутри определения класса
C++ Создание экземпляра класса до определения класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 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
5416 / 4812 / 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;
}

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

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