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

Безопасное приведение - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Всегда хотел знать но боялся спросить http://www.cyberforum.ru/cpp-beginners/thread182515.html
Почему в моих программа мне постоянно приходиться два раза прописывать вот такой текст cin.get(); cin.get(); почему не один раз?
C++ Case Есть ли в C++ аналог дэльфишному Case i of? Я конечно могу прописать на каждый вариант if но не красиво же будет )) и дабы не плодить темы спрошу тут String s; что не так? орет Unit1.cpp(15): E2451 Undefined symbol 'String' мб какой то модуль надо подключить? пишу на консоли )) http://www.cyberforum.ru/cpp-beginners/thread182513.html
C++ переменные с оператором If
Даны две переменные целого типа:А и В. Если их значение не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных А и В
Даны три числа. Вывести вначале наименьшее, а затем наибольшее из данных чисел(If) C++
Даны три числа. Вывести вначале наименьшее, а затем наибольшее из данных чисел(If)
C++ Алгоритм разветвляющейся структуры http://www.cyberforum.ru/cpp-beginners/thread182507.html
Помогите написать две программы в C++. Текст: 1) Даны две прямые, одна из которых проходит через начало координат и точку (X1 ,Y1 ), а вторая - через точки ( X2 ,Y21 ) и (X3, Y3). Написать программу, вычисляющую синус модуля суммы абсцисс этих точек, если эти прямые параллельны, или тангенс модуля разности их ординат в противном случае. 2) Дана строка из 20 слов (словом считается любой набор...
C++ Проверка скобочной записи Доброго время суток! Помогите реализовать задачу: Данн массив (char). В нём записанн какой-нибудь пример со скобками, скобки только такие - (). Проверить правельно ли стот скобки. Заранее спасибо! подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3

Безопасное приведение - C++

27.10.2010, 18:32. Просмотров 589. Ответов 8
Метки (Все метки)

Заинтересовало безопасное приведение типов. То есть чтобы определяло ужимание и выдавало ошибку.

Вышло как-то так. А как бы сделали вы?

И еще очень интересный вопрос - почему safe_cast - ключевое слово (как минимум в MSVS)?

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 <stdexcept>
 
template<class T1, class T>
T1 safe_cast (const T& elem)
{
    T1 val=static_cast<T1>(elem);
    if(val!=elem)
    {
        throw std::runtime_error("Unsafe cast!");
    }
    return val;
}
 
int main()
{
    int f=220;
    try
    {
        int s=safe_cast<char>(f);
        std::cout<<s<<'\n';
    }
    catch(const std::exception& e)
    {
        std::cerr<<e.what()<<'\n';
    }
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru