|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
|
Каст перед входом в тело функции20.01.2021, 07:56. Показов 1499. Ответов 13
Метки нет (Все метки)
Здравствуйте. Представим, что есть конструктор
MyInt foo (string input). Можно ли каким-либо образом закастить выражение Myint x = 123+456 так, чтобы пользователю не приходилось делать это явно Mying x = (to_string(123+456))? Также стоит учитывать, что формат введённого числа может не входить в диапазон INT_MAX и INT_MIN.
0
|
|
| 20.01.2021, 07:56 | |
|
Ответы с готовыми решениями:
13
Окно перед входом в Skype Перезагрузка перед входом в систему Сообщение перед входом в систему |
|
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,816
|
|
| 20.01.2021, 07:58 | |
|
Перегрузить функцию, принимающую параметр типа int, а уже внутри функции вызывать to_string.
0
|
|
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
||
| 20.01.2021, 08:08 [ТС] | ||
|
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|
| 20.01.2021, 08:13 | |
|
0
|
|
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
||||||
| 20.01.2021, 08:19 [ТС] | ||||||
|
DrOffset, как же тогда решать проблему, когда пользователь хочет создать
MyInt x = pow(2,164)?
0
|
||||||
|
"C with Classes"
|
|
| 20.01.2021, 08:22 | |
|
SoBadDay, длинная арифметика нужна похоже
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 20.01.2021, 08:28 | ||
|
Проверку на допустимость вхождения в диапазон делают все стандартные функции преобразования.
0
|
||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
|
| 20.01.2021, 08:30 [ТС] | |
|
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 20.01.2021, 08:38 | ||
|
Вопрос в том, что условные 123 плюс условные 456 могут дать переполнение по int? Тогда преобразованием к строке (to_string) вы эту проблему не решите. Хоть явно, хоть неявно. Туда (в функцию преобразования) уже будет попадать неверное значение. Проверять на переполнение надо до выполнения сложения. А выше я говорил о том, что если у вас уже есть заведомо большее, чем int, число в виде строки, то в процессе преобразования (std::stoi, например) можно понять, вмещается оно или нет.
0
|
||
|
Вездепух
12944 / 6811 / 1821
Регистрация: 18.10.2014
Сообщений: 17,235
|
|
| 20.01.2021, 08:40 | |
|
0
|
|
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||||||
| 20.01.2021, 09:12 | |||||||
|
Ну, допустим, например
0
|
|||||||
|
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
|
||
| 20.01.2021, 09:43 [ТС] | ||
|
MyInt в данном случае это класс, способный хранить в себе любое целое число. В целях сделать удобнее его использование, я стал думать, как реализовать инициализацию объекта таким способом MyInt x = INT1 * INT2, где INT1 и INT2 сами по себе входят в зону допустимых значений long long, а вот их произведение - нетДобавлено через 3 минуты Я в курсе о том, что можно MyInt x = to_string(INT1 * INT2), но если есть способ сделать это так, как я описывал выше, это было бы более читаемо и понятно в использовании. Всё-таки обращение к MyInt подразумевает "прокаченное" обращение к int
0
|
||
|
Вездепух
12944 / 6811 / 1821
Регистрация: 18.10.2014
Сообщений: 17,235
|
||
| 20.01.2021, 10:21 | ||
Сообщение было отмечено SoBadDay как решение
РешениеINT1 * INT2 всегда будет произведением двух long long, вычисляемым в домене типа long long.
1
|
||
|
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
| 20.01.2021, 10:29 | |
|
SoBadDay, если делать по-серьезному, я был создал класс unlimited_integer, который может вмещать число с любым количеством цифр (длинная арифметика) и сделал бы параметром функции его. Несложно предусмотреть каст любых стандартных целых типов в unlimited_integer.
0
|
|
| 20.01.2021, 10:29 | |
|
Помогаю со студенческими работами здесь
14
Смещение сигнала перед входом АЦП Форма авторизации перед входом на сайт Заглушка с подтверждением возраста перед входом на сайт Загрузка Windows 7! Чёрный экран перед входом в систему, дальше не загружается!!! Перегрузка функции через макрос, предупреждение в _Generic на каст перекрестно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|