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

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

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

Шаблон типа переменной - C++

24.06.2014, 19:48. Просмотров 526. Ответов 11
Метки нет (Все метки)

В графической библиотеке (SFML) есть шаблон для типа переменной Vector2. Переменная хранит в себе два числа заданного типа (Например, float). Как координаты на плоскости, если в общем. Уже есть три готовых типа переменных: unsigned int, int и float.
C++
1
2
3
4
// Define the most common types
typedef Vector2<int>          Vector2i;
typedef Vector2<unsigned int> Vector2u;
typedef Vector2<float>        Vector2f;
Проблема в том, что мне float'а не хватает. Пишу с типом double:
C++
1
typedef Vector2<double>        Vector2d;
Но тут выдаёт пёрлы: не хочет работать с разными типами (Например: Vector2d и Vector2i (С Vector2f и Vector2i работает)).
Не понимает определения и пространство имён (Да и вообще всё, что в том файле с кодом шаблона прописано ) в первом файле кода при таком подключении: к первому .c++ файлу подключён второй, а к нему сам файл с шаблоном.
В шаблонах не шарю, проблемы не понимаю.
Файлы с Vector2 во вложениях.
Заранее спасибо.
P.S. Почему-то форуму не понравилось название "Помогите с шаблоном".
Миниатюры
Шаблон типа переменной  
Вложения
Тип файла: zip Vector2.zip (3.1 Кб, 9 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2014, 19:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблон типа переменной (C++):

Переменной d присвоить первую цифру после запятой некоторой переменной x типа float - C++
Нужно целой переменной d присвоить первую цыфру после комы некоторой переменной x типа float Скажите, пожалуйста, с чего начать и по...

Записать адрес переменной произвольного типа в переменную типа int - C++
Здравствуйте, есть структура __packed struct myStruct{ uint32 HisCh; uint32 sNo; uint16 tNo; uint32 reserv; };

Шаблон с переменной - C++
Здравствуйте! подскажите пожалуйста.. Есть шаблон вида: #ifndef HEADER1_H #define HEADER1_H using namespace std; ...

Создать шаблон типа Char - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;string&gt; using namespace std; char a; int aa,a1,sk=50,k=0; template &lt;char T&gt; ...

Определение размера типа переданного в шаблон - C++
Доброй день. Подскажите почему, sizeof в данном случае некорректно определяет размер структуры struct Preheader_1 { uint8_t...

Создать шаблон класса типа стек - C++
Помогите, пожалуйста. Необходимо создать шаблон класса типа стек. Я никак не пойму, как перегружать операторы, если у меня шаблон класса...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
24.06.2014, 20:37 #2
Цитата Сообщение от WinRar007 Посмотреть сообщение
Пишу с типом double
Где пишите? Файл с этим кодом где?
Попробуйте для начала не вводить никакой typedef а написать просто
C++
1
sf::Vector2<double> a;
Если съест - значит не всё так плохо и можно решать проблему дальше.
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
24.06.2014, 20:51  [ТС] #3
Где пишите? Файл с этим кодом где?
Я просто добавил строчку
C++
1
typedef Vector2<double>        Vector2d;
К
C++
1
2
3
typedef Vector2<int>          Vector2i;
typedef Vector2<unsigned int> Vector2u;
typedef Vector2<float>        Vector2f;
Решил исходный, без моих правок кинуть.
Цитата Сообщение от Tulosba Посмотреть сообщение
sf::Vector2<double> a;
Если съест - значит не всё так плохо и можно решать проблему дальше.
Съел.
Только боюсь, чтоб не вырвало.
Спасибо. Только вот Vector2d как-то красивее, чем sf::Vector2<double> выглядит. Точно нет решения с typedef?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2014, 21:01 #4
Цитата Сообщение от WinRar007 Посмотреть сообщение
Точно нет решения с typedef?
У меня ошибки не выдаёт.
Миниатюры
Шаблон типа переменной  
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2014, 21:21 #5
...
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
24.06.2014, 21:24  [ТС] #6
В любом случае, спасибо. Тему пока закрывать не буду - хотелось бы решение с Vector2d.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2014, 21:40 #7
Цитата Сообщение от WinRar007 Посмотреть сообщение
хотелось бы решение с Vector2d.
Чем не решение, в 4 посте? Или как-то по-другому нужно? Проблема непонятна.
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
24.06.2014, 22:00  [ТС] #8
Чем не решение, в 4 посте?
Вот:
Цитата Сообщение от WinRar007 Посмотреть сообщение
Но тут выдаёт пёрлы: не хочет работать с разными типами (Например: Vector2d и Vector2i (С Vector2f и Vector2i работает)).
Не понимает определения и пространство имён (Да и вообще всё, что в том файле с кодом шаблона прописано ) в первом файле кода при таком подключении: к первому .c++ файлу подключён второй, а к нему сам файл с шаблоном.
В шаблонах не шарю, проблемы не понимаю.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.06.2014, 22:08 #9
А вот:
Цитата Сообщение от Tulosba Посмотреть сообщение
Где пишите? Файл с этим кодом где?
Добавлено через 2 минуты
В архиве, что за файлы выложены? Библиотечные?
Цитата Сообщение от WinRar007 Посмотреть сообщение
Решил исходный, без моих правок кинуть.
Вы что, в библиотечных файлах правки делаете?
vvm28
Учусь всегда.
18 / 18 / 4
Регистрация: 22.12.2013
Сообщений: 202
Записей в блоге: 8
Завершенные тесты: 1
24.06.2014, 22:28 #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
"Спасибо. Только вот Vector2d как-то красивее, чем sf::Vector2<double> выглядит. Точно нет решения с typedef?"

Никто не запрещает написать тоже самое:
C++ (Qt)
1
typedef  sf::Vector2<double>  sfVector2d;
Или, как вам нравится. например "sfVec2dd". Это только для вашего удобства, смысл не поменяется.
Так уже будет из пространства имен sf.

Можно еще другой вариант:
C++ (Qt)
1
using namespace sf;
тогда дальше не нужно будет конкретно указывать
sf::Vector2<double> , а сразу обратиться к Vector2<double>
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
25.06.2014, 19:31  [ТС] #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы что, в библиотечных файлах правки делаете?
"Ты не имеешь права изменять этот старый замок, но сарай или пристройку - как угодно."(C) ЮНЕСКО
Цитата Сообщение от alsav22 Посмотреть сообщение
В архиве, что за файлы выложены? Библиотечные?
Я же уже сказал - файлы с шаблоном.
vvm28,
Может у вас всё и работает, но у меня лично нет. На миниатюре в первом посте видно.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2014, 20:46 #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы что, в библиотечных файлах правки делаете?
???
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 20:46
Привет! Вот еще темы с ответами:

Operator< для вложенного в шаблон типа - C++
Есть шаблон Template. В шаблоне есть вложенный класс Class. Вопрос: как для этого класса определить operator&lt; у которого первым аргументом...

Функция - шаблон ,параметр - двумерный массив типа Т . - C++
Как правильно прописать в параметры функции двумерный массив типа Т ?(шаблонная функция) Видел формулу преобразования двумерного в...

Разработать шаблон класса реализующего работу с матрицами переменной размерности. - C++
Разработать шаблон класса реализующего работу с матрицами переменной размерности. Тип эле- мента задается как параметр шаблона. Написать...

Как создать шаблон для пользовательского и встроенного типа? - C++
Есть перегруженные операторы класса: void String::operator=(const char *a){ //Перегрпуженный оператор присваивания для типа char* ...


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

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

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