Шаблон C ++ для дополнительных аргументов передачи по ссылке, которые не нужны после вызова функции? - PullRequest
2 голосов
/ 05 марта 2012

Есть ли предпочтительный шаблон для определения одноразовых переменных в C ++ для передачи функциям, которые принимают аргументы по ссылке?Одним из примеров этого является использование minmaxLoc функции openCV:

void minMaxLoc(const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const Mat& mask=Mat())

Функция изменяет значение minVal, maxVal, minLoc, maxLoc в соответствии с минимальными / максимальными значениями интенсивности и местоположениями.

Я мог бы объявить фиктивные переменные для всех параметров, но мне действительно нужен только maxLoc.Есть ли предпочтительный шаблон C ++ такой, что я объявляю только maxLoc и не загромождаю свой код дополнительными объявлениями переменных, которые я определяю для вызова minMaxLoc ()?

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

В этом конкретном случае вы можете передать nullptr для любых параметров, результаты которых вам не нужны. См. документацию OpenCV (всегда полезно прочитать документацию).

Если параметр не является обязательным, вам необходимо объявить локальные переменные и передать их адреса. Если вы не хотите, чтобы это загромождало ваш код, напишите вспомогательную функцию для инкапсуляции беспорядка.

1 голос
/ 05 марта 2012
  1. Если у вас есть контроль над написанием функции, вы можете использовать аргументы переменной длины Передача переменного числа аргументов вокруг

  2. Если вы нетогда одна идея состоит в том, чтобы написать простые в использовании обертки, которые создадут для вас макеты, и просто вызвать обертки

...