Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Есть некий шаблон класса: template <typename T1, typename T2, typename T3> class А { };
Есть специализация этого шаблона и в нём некий метод: template <> class A <int, double, char> { ... void show(); };
Какой синтаксис использовать для записи определения метода show() в VC++ 2010 Express?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2012, 04:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Синтаксис определения метода специализии шаблона класса. (C++):

Определение метода-шаблона за пределами шаблона класса - C++
День добрый! Разбираюсь в шаблонах, решил копнуть поглубже. Вот пример: template &lt;typename T1&gt; class K // шаблон класса { public:...

Переопределение метода класса-шаблона - C++
Привет народ. Есть такой код: typedef OS::process&lt;OS::pr0, 90&gt; TProc1; TProc1 Proc1; template&lt;&gt; void Proc1::exec() { //тут...

Вынос реализации метода шаблона класса в другой файл - C++
Здравствуйте! Допустим, есть класс: // class.hpp #ifndef CLASS_HPP_ #define CLASS_HPP_ class testClass{ public:

Функция - метода класса для определения совпадения имени человека с некоторым заданным - C++
Объявите класс TMan, создающий тип – человека. Элементы – данные класса – имя, возраст человека. Предусмотрите конструкторы класса: ...

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

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

2
silent_1991
Эксперт С++
4987 / 3044 / 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;
}
1
alsav22
5426 / 4821 / 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;
}

...Шаблоны всё равно не разнести по файлам определения и инициализации...
Специализацию-то можно. Но это другая тема. Вот здесь я это выяснял Как правильно разделить файл в шаблонами? Ещё раз благодарю!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2012, 06:07
Привет! Вот еще темы с ответами:

Непонятный синтаксис typedef в параметрах шаблона - C++
Отсюда: http://www.informit.com/articles/article.aspx?p=1881386&amp;seqNum=2 namespace std { namespace chrono { typedef...

Вызов метода класса из метода другого класса - C++
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...

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

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...


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

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

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