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

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

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

А можно ли темплейту передать число? - C++

12.03.2012, 12:15. Просмотров 316. Ответов 3
Метки нет (Все метки)

С базовыми типами темплейтов всё понятно. А число можно? И как7
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2012, 12:15     А можно ли темплейту передать число?
Посмотрите здесь:
C++ Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и распечатат
Можно ли передать в функциию тип? C++
Можно ли передать в функцию указатель на перегруженный оператор? C++
C++ Можно ли передать в функцию массив произвольного размера ?
C++ Можно ли значение вектора A передать вектору B через swap?
Какими способами можно передать многомерные массивы в функцию? C++
C++ Можно ли в качестве параметра функции передать другую функцию?
Как передать 16-ричное число в com-порт? C++
Можно ли передать указатель на функцию как параметр другой функции? C++
C++ А можно в функцию, или перегруженный оператор передать ссылку на копию?
Функции: Как передать в качестве параметра число? C++
Как передать в функцию число и структуру побайтно? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
12.03.2012, 12:21     А можно ли темплейту передать число? #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
#include <iostream>
#include <typeinfo>
 
template<class T, int N>
class true_typedef
{
public:
   true_typedef(const T& val = T()):value(val)
   {
   }
   const T get() const { return value; }
private:
   T value;
};
 
template<class T, class T2, int N1, int N2>
bool operator == (const true_typedef<T, N1>& lhs, const true_typedef<T2, N2>& rhs)
{
   return typeid(T) == typeid(T2) && N1 == N2 && lhs.get() == rhs.get();
}
 
int main()
{
    std::cout << (true_typedef<int, 1>() == true_typedef<int, 2>()) << std::endl;
    std::cout << (true_typedef<int, 2>() == true_typedef<int, 1>()) << std::endl;
    std::cout << (true_typedef<int, 3>() == true_typedef<int, 3>()) << std::endl;
}
http://liveworkspace.org/code/c6d713...8a7775a8cf6e59
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.03.2012, 07:40  [ТС]     А можно ли темплейту передать число? #3
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
template<class T, int N>
class true_typedef
{
public:
* *true_typedef(const T& val = T()):value(val)
* *{
* *}
* *const T get() const { return value; }
private:
* *T value;
};
А использовать так:
C++
1
d3true_typedef <double, 3>
?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.03.2012, 08:07     А можно ли темплейту передать число? #4
taras atavin, тут идеальным примером будет класс статического массива:
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
#include <iostream>
#include <stdexcept>
 
template <typename T, size_t size_>
class Array
{
public:
    T& operator[](size_t i)
    {
        if (i >= size_)
            throw std::out_of_range("");
 
        return data[i];
    }
 
    size_t size() const {
        return size_;
    }
 
private:
    T data[size_];
};
 
int main()
{
    Array<int, 5> array;
 
    for (int i = 0; i < array.size(); ++i)
        array[i] = i + 1;
 
    for (int i = 0; i < array.size(); ++i)
        std::cout << array[i] << " ";
}
Yandex
Объявления
16.03.2012, 08:07     А можно ли темплейту передать число?
Ответ Создать тему
Опции темы

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