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

Приведение типов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Координаты пересечения двух прямоугольников http://www.cyberforum.ru/cpp-beginners/thread786295.html
здравствуйте. сегодня наткнулся на такую задачу: определить координаты левого верхнего и правого нижнего углов общей части 2-х прямоугольников, которые задаются так же координатами левого верхнего и правого нижнего углов. стороны прямоугольников параллельны координатным осям. случаев получается чуть больше чем дофига и как их все учесть? написать нужно на с++. может есть уже готовый алгоритм(знаю...
C++ Странное поведение функций _findfirst() и _findnext() в материалах по С++ дан пример работы с файлами, переименование, удаление и просмотр содержимого директории. Просмотр осуществляется с помощью структуры fileinfo и функций _findfirst() и _findnext(). Вопрос следующий, в каждой папке у меня оказывается по 2 дополнительных файла с именем точка и две точки, почему? #include <stdio.h> #include <io.h> #include <string.h> #include... http://www.cyberforum.ru/cpp-beginners/thread786286.html
C++ Символьные строки (верно ли, что существуют такие натуральные i и j, что 1 < i < j < n и что si совпадает с s(i+1), а sj совпадает с s(j+1))
Даны символы s1, s2, … Известно, что символ s1 отличен от восклицательного знака и что среди s2, s3,. .. есть по крайней мере один восклицательный знак. Пусть s1, …, sn – символы данной последовательности, предшествующие первому восклицательному знаку (n заранее неизвестно).Выяснить, верно ли, что существуют такие натуральные i и j, что 1 < i < j < n и что si совпадает с s(i+1), а sj...
C++ Game developing на C++
Всем привет! Слушайте народ подходит ли C++ для программирования под игры?(например движки там графические,физические писать тудым сюдым:)) И еше куда пойти учиться в России на программиста чтобы потом доучить game-developing(программирование,анимация,моделинг) и уехать за границу и там уже профессионально заниматься этим?
C++ смена логина http://www.cyberforum.ru/cpp-beginners/thread786263.html
Написать программу. Имеется три пользователя( три разных логина и пароля), ввести логин и пароль, если он правильный вывести на экран фразу "Вход в систему", если не правильный - даем подсказку и вводим пароль еще раз, если снова неправильный - предлагаем сменить пароль( с помощью специального кода) или ввести пароль еще раз. Количество попыток не более трех.
C++ Деление вещественных чисел Есть float a,b,rez; Делю 4 на 2 = 2 все нормально. 2 на 4 ответ 0 Как правильно делить вещественные числа в с++? подробнее

Показать сообщение отдельно
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
18.02.2013, 20:04
Цитата Сообщение от denis174 Посмотреть сообщение
Т.е, прописать явную специализацию для int, double и std::string, а для char* пропустить???
Примерно так:
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
#include <iostream>
#include <string>
 
#include <boost/lexical_cast.hpp>
 
 
template<typename TargetType, typename SourceType>
struct my_cool_cast_impl {
   
   static TargetType cast(SourceType const& source) {
      return boost::lexical_cast<TargetType>(source);
   }
};
 
template<typename SourceType>
struct my_cool_cast_impl<char *, SourceType>;
 
 
template<typename TargetType, typename SourceType>
TargetType my_cool_cast(SourceType const& source) {
   return my_cool_cast_impl<TargetType, SourceType>::cast(source);
}
 
 
int main() {
   std::cout << my_cool_cast<std::string>(123) << std::endl;
   std::cout << my_cool_cast<char *>(456) << std::endl;
}
http://liveworkspace.org/code/24h7JA

Добавлено через 1 минуту
Если есть static_assert, то всё проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <type_traits>
 
#include <boost/lexical_cast.hpp>
 
 
template<typename TargetType, typename SourceType>
TargetType my_cool_cast(SourceType const& source) {
   static_assert(!std::is_same<TargetType, char *>::value, "bad target type for a cast: char *");
   return boost::lexical_cast<TargetType>(source);
}
 
 
int main() {
   std::cout << my_cool_cast<std::string>(123) << std::endl;
   std::cout << my_cool_cast<char *>(456) << std::endl;
}
http://liveworkspace.org/code/24myKf
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru