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

Как заставить компилятор не компилить неправильную программу? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача страуструпа: Измените программу так, чтобы она выводила числа, которые почти равны друг другу http://www.cyberforum.ru/cpp-beginners/thread749576.html
Есть программа #include <iostream> using namespace std; int main () { double val_1 = 0.0;
C++ Дан массив из 10 элементов (заполнить вручную). Найти все четные элементы массива находящиеся на нечетных местах Дан массив из 10 элементов (заполнить вручную). Найти все четные элементы массива находящиеся на нечетных местах. В случае отсутствия таких элементов вывести на экран надпись: «These elements are not found».* const int size=10; int ar={2,32,69,35,48,78,95,21,25,12}; for (int i=0; i<size; i++) if (ar%2==0 && i%2!=0) http://www.cyberforum.ru/cpp-beginners/thread749571.html
C++ Поиск подстроки в строке(алгоритм Бойера-Мура)
Программа находит шаблоны в строке алгоритмом Бойера-Мура и находить должна в строке которая находится в файле. Сам код работает и находит все как надо, кроме разве что того, что если в строке есть пробел он ничего не ищет, а сразу return 0... Возможно ли, что это глюк компилятора или все же ошибка в коде? Помогите, пожалуйста.
Нужен совет: Какую библиотетеку подключить, чтобы в консоли русские символы были C++
Какую библиотетеку подключить что бы в консоли русские символы были ?
C++ Файл в vector<int> http://www.cyberforum.ru/cpp-beginners/thread749551.html
Как более удачно записать файл в вектор. С помощью чего открыт файл не имеет значения. Заранее спасибо.
C++ В массиве целых чисел из 20 элементов найти все элементы, значение которых больше среднего арифметического массива В массиве целых чисел из 20 элементов найти все элементы, значение которых больше среднего арифметического массива. Вывести на кран значения и позиции этих элементов. Подскажите, пожалуйста, как вывести позиции элементов? Заранее спасибо. Вот мое решение: const int size=20; int ar={2,4,5,3,6,15,2,36,4,2,3,65,4,1,2,3,6,5,7,10}; int sredn=0; int sum=0; подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.12.2012, 15:08     Как заставить компилятор не компилить неправильную программу?
Цитата Сообщение от kravam Посмотреть сообщение
Смотрим перегруженный оператор = класса T
2) Определяем, что параметром к этому оператору может идти какой-нибудь класс T1
3) Пытаемся перетипизировать (T1)8, а не получается
4) Вот и ошибка компиляции. Как-то так.
Конструктор не работает на этапе компиляции и как ты не проверяй параметр в конструкторе, компилятор не сможет понять, чего ты хотел. Он может только формально перевести текст в код, но не проанализировать логику на предмет того, какую сгенерить "пользовательскую" гугломессагу. Он понимает лишь алгоритмы, но не их назначение. Единственное, как можно конкретное значение запретить при компиляции, это сделать его не представимым, например, сократить разрядность до 3-х бит, тогда диапазон представимых чисел от ноля до семи, восемь в него не входит.

Добавлено через 1 минуту
Можно, конечно, каждое разрешённое значение закейсовать, но это перенос проблемы и её усугубление, а не решение: можно ошибиться при написании миллиардов кейсов и компилятор это проглотит.
 
Текущее время: 22:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru