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

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

Войти
Регистрация
Восстановить пароль
 
levgen
3 / 3 / 2
Регистрация: 07.02.2013
Сообщений: 185
#1

Параметры типа класса шаблона - C++

31.08.2015, 19:08. Просмотров 215. Ответов 3
Метки нет (Все метки)

смотрите был такой код в файле заголовочном:
C++
1
template <typename DataType> class CircleList {
.....................
а преподаватель изменил его и стал такой код:
C++
1
template <typename DataType, int K> class CircleList {
......................
и он задает вопрос такой:
можно ли среди параметров типа в шаблоне класс потребовать подстановку какойто константы и зачем оно понадобится?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2015, 19:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Параметры типа класса шаблона (C++):

Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа - C++
Доброго времени суток, пишу класс содержащий несколько std::set от разных типов, нужно сделать метод возвращающий указатель на нужное...

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

параметры шаблона - C++
1) работа с параметрами шаблона; 2) создайте класс для обьекта типа &quot;муз. проигрыватель&quot;.постройте UMLдиаграмму. напишите реализацию на...

Параметры шаблона - C++
Доброго всем вечера. Вопрос по теории, который не выходит нагуглить. К примеру, нужно хранить статический массив интов с точно известным...

Параметры шаблона - C++
как в общем можно объяснить то что находиться в угловых скобках после template, я понимаю что template &lt;список параметров&gt;

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
hoggy
Нарушитель
6589 / 2770 / 476
Регистрация: 15.11.2014
Сообщений: 6,124
Завершенные тесты: 1
31.08.2015, 19:17 #2
Цитата Сообщение от levgen Посмотреть сообщение
ожно ли среди параметров типа в шаблоне класс потребовать подстановку какойто константы и зачем оно понадобится?
ну например так:


http://rextester.com/AJTG72666

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>
 
 
// --- T - тип массива
// --- N - количество элементов
// вся информация выводится автоматически
template<class T, size_t N>
void view(const T (&arr)[N])
{
 
    std::cout<< "array = {";
    for(const auto& i: arr)
        std::cout<< i<<",";
    std::cout<< "}\n";
}
 
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    
    int ar[]={1,2,3};
    
    // --- размер массива выведется автоматически
    view(ar);
    
    float far[]={1.5f ,2.3f ,3.6f };
    view(far);
    
}
Добавлено через 48 секунд
Цитата Сообщение от levgen Посмотреть сообщение
можно ли среди параметров типа в шаблоне класс потребовать подстановку какойто константы и зачем оно понадобится?
1.
можно.

2.
100% инлайн функциальности времени компиляции.

3.
для нужд метапрограммирования.
1
rikimaru2013
C++ Game Dev
2436 / 1130 / 240
Регистрация: 30.11.2013
Сообщений: 3,687
31.08.2015, 20:02 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
template<int n>
class Factorial {
public:
    static const int f = Factorial<n - 1>::f * n;
};
 
template<>
class Factorial<0> {
public:        
    static const int f = 1;
};
 
int main() {
    std::cout << Factorial<5>::f << std::endl; // 120
}
1
John Prick
801 / 734 / 145
Регистрация: 27.07.2012
Сообщений: 2,107
Завершенные тесты: 3
31.08.2015, 20:17 #4
Цитата Сообщение от levgen Посмотреть сообщение
и он задает вопрос такой
Какой коварный тип!

Цитата Сообщение от levgen Посмотреть сообщение
можно ли среди параметров типа в шаблоне класс потребовать подстановку какойто константы и зачем оно понадобится?
Можно. Зачем? Круг задач весьма широк. В основном - метапрограммирование. Но есть и другие. Можно, например, какой-нить класс буфера фиксированной длины создать, длину в параметре шаблона задавать.

Ну или банально:
C++
1
2
template <bool v> class cassert;
template<> class cassert<true> {};
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2015, 20:17
Привет! Вот еще темы с ответами:

Шаблоны как параметры шаблона - C++
Привет, в книге увидел такой пример template&lt;template&lt;typename T&gt; class x&gt; class y; но из объяснений в книге я совершенно...

Почему шаблонный параметр-шаблон не принимает другие параметры шаблона - C++
Т.е. нельзя вместо template &lt;typename T, template &lt;typename _Ty, class _Aloc = allocator&lt;_Ty&gt; &gt; class CONT = vector&gt; class...

Какими способами можно использовать функции класса B, как параметры функции Sub класса А? - C++
class A {... void Sub(...); ...} class B : ... { public: float f1(float); float f2(float); ...

Создание указателя типа базового класса на экземпляр производного класса - C++
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса - наследника, для чего это может применяться?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.08.2015, 20:17
Ответ Создать тему
Опции темы

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