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

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

Войти
Регистрация
Восстановить пароль
 
DrMGC
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 83
#1

Шаблоны С++ - C++

27.09.2013, 15:23. Просмотров 488. Ответов 13
Метки нет (Все метки)

C++
1
2
3
4
template <typename T_sizeCapacity> class SomeClass {
public:
    T_sizeCacity size;
};
Как сделать чтобы T_sizeCapacity мог быть только числовым типом?
PS нормальный заголовок не смог придумать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 15:23     Шаблоны С++
Посмотрите здесь:

Шаблоны - C++
Выполнить задание без использования библиотеки стандартных шаблонов. а) Создать шаблонную функцию поиска по заданному ключу. Функция...

Шаблоны С++ - C++
Существует ли ограничение типа параметра шаблона в C++? То, что нельзя использовать шаблоны функций в качестве параметров шаблонов, это...

Шаблоны в C++ - C++
Доброго времени суток! Начал разбираться что такое шаблон и с чем его едят. Загуглил, вставил код из википедии. Ошибка. ...

шаблоны - C++
Помогите пож. разобраться с шаблонами. Шаблоны у которых параметры тоже шаблоны. из книги: tamplate&lt;typenamy T&gt;class Thing здесь...

Шаблоны C++11 - C++
#include &lt;iostream&gt; template&lt;typename T1, typename T2&gt; auto func(T1 a, T2 b) -&gt; decltype(a&gt;b?b:a) { return a&gt;b?b:a; ...

Шаблоны - C++
ругается на строку &quot;friend class List&lt;T&gt;;&quot;, вот что пишет: 1&gt;c:\users\slava\documents\visual studio...

Шаблоны - C++
Добрый день. Не могли бы объяснить вот этот вопрос: Допускают ли шаблоны вложенность описания?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.09.2013, 15:34     Шаблоны С++ #2
DrMGC, а можешь как-то обосновать необходимость этого? Мне просто слабо представляется, какой класс может заставить делать подобный шаблон?

И потом, что такое "числовой тип"?
int это "числовой"?
а double это какой тогда? Тоже числовой, конечно!
а char разве не числовой?
а std::string чем хуже вышеперечисленных?
DrMGC
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 83
27.09.2013, 15:40  [ТС]     Шаблоны С++ #3
Kuzia domovenok,
C++
1
2
3
4
5
6
7
8
9
template<typename T_SizeCapacity, typename T_Value>
class Array {
public:
    Array();
    ~Array();
    
    T_SizeCapacity size;
    T_Value *pValue;
};
Т.е. чтобы можно было указать какой предел массива
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.09.2013, 15:48     Шаблоны С++ #4
DrMGC, да, я сразу заподозрил, что ты мутишь обёртку над массивом... и что?
Указывай тип size_t! Какой ещё тип может подходить на эту роль? Другого тут быть просто не может.
Зачем тут нужен шаблонный тип для размера массива?
C++
1
2
3
4
5
6
7
8
9
template<typename T_Value>
class Array {
public:
    Array();
    ~Array();
    
    size_t size;
    T_Value *pValue;
};
Добавлено через 3 минуты
Сам посуди, какой ещё разрешено указывать тип, кроме size_t ???
Ну разрешишь ты создать по шаблону int size;
а юзер возьмёт и введёт отрицательный размер.
или создаст по шаблону массив с размером double
]

Короче, ни один тип, кроме size_t на этом месте стоять не может. Зачем тогда шаблонить его?
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
27.09.2013, 15:58     Шаблоны С++ #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Короче, ни один тип, кроме size_t на этом месте стоять не может. Зачем тогда шаблонить его?
Похоже затем же, зачем в std::array это сделали.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.09.2013, 16:04     Шаблоны С++ #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
Похоже затем же, зачем в std::array это сделали.
неужели? где же?
Kastaneda, тебе не кажется странным, что у автора <typename T_SizeCapacity>
а в std::array прописано <size_t N >?

Добавлено через 1 минуту
b gjnjv? 'nj abxf yt bp C++? f bp uh`,fyyjuj C++11
Jupiter
27.09.2013, 16:53
  #7

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
f bp uh`,fyyjuj C++11
слив засчитан

Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.09.2013, 16:57     Шаблоны С++ #8
Цитата Сообщение от Jupiter Посмотреть сообщение
слив засчитан
Поддерживаешь Kastaneda?
Дубль два.
А тебе не кажется странным, что у автора <typename T_SizeCapacity>
а в std::array прописано <size_t N >?
А значит Kastaneda соответственно не совсем по теме ответил?
Jupiter
27.09.2013, 16:59
  #9

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Поддерживаешь Kastaneda?
нет
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А тебе не кажется странным
кажется, но не вижу повода поминать тут c++11

DrMGC
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 83
27.09.2013, 17:07  [ТС]     Шаблоны С++ #10
я использую C++11
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.09.2013, 17:11     Шаблоны С++ #11
Могу предложить сделать так:
C++
1
2
3
4
5
6
template<typename T>
class A
{
public:
   A() {static_assert(std::is_integral<T>::value, "must be integral");}
};
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
27.09.2013, 17:20     Шаблоны С++ #12
DiffEreD, извиняюсь, что похоже совсем раздуваю тему своими постами, но не могу молчать!
Вопросов море:
Зачем автору такого рода шаблон?
Что даст эта проверка? Отрицательные числа она пропустит, придётся их отсекать отдельным условием.
Длинные числа она тоже пропустит. Придётся ещё условие вставлять.
и что у нас останется после этого????
Единственный тип, описывающий размер массива это size_t!!! Так зачем, зачем, зачем??? делать по-другому?
оператор new[] определён как
C++
1
operator new[] (std::size_t size)
Так зачем использовать какой-либо другой тип в качестве аргумента шаблона, если он всегда будет приводиться к size_t?
Kastaneda
27.09.2013, 17:24
  #13

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А тебе не кажется странным, что у автора <typename T_SizeCapacity>
а в std::array прописано <size_t N >?
А значит Kastaneda соответственно не совсем по теме ответил?
да, да, я похоже не совсем въехал.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 18:03     Шаблоны С++
Еще ссылки по теме:

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

шаблоны в си++ - C++
кто может сказать где прблема? List.h #ifndef LIST_H #define LIST_H #include&lt;iostream&gt; #include&lt;ostream&gt; ...

Шаблоны - C++
Здравствуйте не объясните новичку пару аспектов про шаблоны 1)Зачем они нужны 2)Преимущества 3)Синтаксис 4)Маленький примерчик

Шаблоны - C++
Создать параметризированные классы List и ListItem. Классы должны содержать конструкторы, деструкторы, функции add, in, remove, getLength,...

Шаблоны - C++
Пусть есть шаблон-структура. template &lt;class Data&gt; struct A { Data p; }; И есть указатели на объекты: A&lt;int&gt; *b; ...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.09.2013, 18:03     Шаблоны С++ #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
оператор new[] определён как
C++
1
operator new[] (std::size_t size)
несмотря на это, никто не запрещает написать нечто такое:
C++
1
int* p = new int[-1];
и получить фейл этапа выполнения.
Yandex
Объявления
27.09.2013, 18:03     Шаблоны С++
Ответ Создать тему
Опции темы

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