Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Строгая типизация. Только ручное приведение типов.


Автор: 1IMMORTAL 27.6.2018, 15:43
Приветствую Вас, уважаемые форумчане!

Вопрос, предполагаю, элементарный для опытных программистов.

Подскажите пожалуйста каким образом средствами C++ возможно реализовать строгую типизацию (запрет автоматического приведения для некоторых типов данных).

Поясню вопрос на упрощённом примере.
Предположим, есть задача реализовать библиотеку на C++, выполняющую математические вычисления с физическими величинами. Например "Количество яблок", "Количество груш", "Объём занимаемый яблоком", "Объём занимаемый грушей" и так далее. При этом базовый тип для этих сущностей один, например unsigned int.
  • Как сделать так, чтобы на этапе компиляции было невозможно сложить яблоки с грушами, при этом яблоки с яблоками складывались так же эффективно, как просто два числа типа unsigned int?
  • Как сделать, чтобы можно было умножать только количество яблок на объём яблока и получать значение в другом типе "Объём занимаемый яблоками", при этом нельзя было умножить объём груши на количество яблок?
  • И как при этом оставить возможность простого вывода любого из этих значений на дисплей или в файл, предварительно преобразовав их в строку?

Интересует вариант реализации, при котором описанные ограничения контролируются компилятором и на этапе исполнения программы уже не требуют никаких проверок. Кроме этого было бы прекрасно обойтись без сторонних библиотек и ограничиться стандартными средствами языка С++, имеющимися во всех актуальных компиляторах C++.

Большое спасибо за уделённое время и Ваши ответы!

Автор: 1IMMORTAL 28.6.2018, 13:56
Всем спасибо за внимание, ответ получил здесь: http://www.cyberforum.ru/cpp-beginners/thread2270256.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)