Именованные Параметры Повышения

Иногда C++ требуется более гибкий механизм параметризации функций.

Например, у нас есть функция с двумя обязательными параметрами и большим количеством необязательных.

  
  
   

bool foo(int important, int& pOut, int sometimes = 1, int occasionally = 2, int rarely = 3) { //.

}

Проблемы здесь могут быть следующие
  1. Пользователи постоянно путают порядок параметров; их типы почти полностью совпадают, поэтому компилятор не может помочь (разве что иногда со вторым параметром).

  2. Из необязательных параметров чаще всего нужен один, а если его нет иногда пользователи вынуждены запоминать значения по умолчанию, чтобы явно установить их при вызове.

    Значения по умолчанию другие, поэтому ошибок снова много

  3. Невозможно выразить зависимость значений по умолчанию одних параметров от других.

Эти проблемы можно решить разными способами: передать структуру в качестве параметра, использовать перегрузку функций или даже функции с разными именами.

Boost предлагает другое решение.

Этот именованные параметры .

Мы больше не привязаны к порядку параметров, а возможность указывать осознанные имена при вызове существенно снижает вероятность ошибок.

В качестве дополнительного бонуса мы получаем возможность использовать одни параметры при вычислении значения по умолчанию других.

В качестве примера рассмотрим, как можно определить функцию фу используя предложенный механизм (изменим название на NameParametersFoo во избежание путаницы).

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

Обратите внимание – без знаков препинания.



#include <boost/parameter.hpp> BOOST_PARAMETER_NAME(important) BOOST_PARAMETER_NAME(pOut) BOOST_PARAMETER_NAME(sometimes) BOOST_PARAMETER_NAME(occasionally) BOOST_PARAMETER_NAME(rarely)

далее мы устанавливаем функцию

BOOST_PARAMETER_FUNCTION(

Теги: #boost #boost.parameter #параметры #функции #программирование #C++

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.