По принцип, ако искам нещо подобно,
double b = sin(2.2);
но случайно напишете нещо подобно,
double b = sin(2.2f);
няма съобщение за грешка или дори предупредително съобщение, въпреки че това очевидно води до различен, неточен и следователно неправилен резултат. Този тип грешка може да бъде предотвратена, като се принуди компилаторът да не прави косвени преобразувания на float в double. Има ли някакъв начин да се постигне това, било то чрез превключвател за компилация (за предпочитане във Visual Studio), някои интелигентни макроси или клас, който се държи като променливи float/double и декларира свои собствени оператори?
Редактиране: Също така се интересувам от решаване на подобни проблеми с помощта на оператори (като например двойно b = 2.2f*2.2f) или присвоявания (двойно b=2.2f).
double
параметри, когато подадетеfloat
стойност:2.2f
винаги има типfloat
, никога персонализиран клас. Тъй като изброявате потребителски клас като опция, можете ли да редактирате въпроса си, за да изясните в кои случаи искате грешка и в кои не? - person   schedule 29.06.2014