Как избежать неявного приведения от double к int?C++

Программы на C++. Форум разработчиков
Anonymous
Как избежать неявного приведения от double к int?

Сообщение Anonymous »


Я пытаюсь создать оболочку для обработки арифметических параметров с помощью специальной логики.

https://godbolt.org/z/zG959e5Pz

#include шаблон оболочка структуры { оболочка(const T& o): значение(o) {} значение Т; }; void func(wrapper a) { printf("int: %d\n", a.value); } интервал основной () { функция(1); // целое: 1 функция (1.0); // целое: 1 } Однако, когда я объявляю функцию перегрузки для func, я встречаю ошибку компиляции. Похоже, что компилятор не может выбрать конкретную перегруженную функцию.

#include шаблон оболочка структуры { оболочка(const T& o): значение(o) {} значение Т; }; void func(wrapper a) { printf("int: %d\n", a.value); } void func(wrapper a) { printf("double: %.2f\n", a.value); } интервал основной () { функция(1); // функция(1.1); } https://godbolt.org/z/YEo4c3E69

ошибка компилятора

: В функции 'int main()': :18:9: ошибка: вызов перегруженной функции func(int) неоднозначен 18 | функция(1); | ~~~~^~~ :9:6: примечание: кандидат: 'void func(wrapper)' 9 | void func(wrapper a) { | ^~~~ :13:6: примечание: кандидат: 'void func(wrapper)' 13 | void func(wrapper a) { | ^~~~ Как это исправить?

Вернуться в «C++»