От новичка до гуру: Курсы программирования на CyberDuff

Шаблон С++ для дополнительных аргументов передачи по ссылке, которые не нужны после вызова функции?

Существует ли предпочтительный шаблон для определения одноразовых переменных в С++ для передачи функциям, которые принимают аргументы по ссылке? Одним из примеров этого является использование функции 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()?


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

Ответы:


1

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

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

05.03.2012
  • должен был уловить это с уважением к opencv, спасибо. Угадайте, что ответственность за это лежит на определении функции. 05.03.2012

  • 2
    1. Если у вас есть контроль над записью функции, вы можете использовать аргументы переменной длины аргументы вокруг

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

    05.03.2012
  • В C++ следует избегать функций с переменным числом аргументов, поскольку они не являются типобезопасными. (Шаблоны функций с переменным числом аргументов со временем решат эту проблему, но не все компиляторы пока поддерживают шаблоны с переменным числом аргументов.) 05.03.2012
  • Новые материалы

    Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
    Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

    5 простых концепций Python, ставших сложными
    #заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

    «Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
    Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

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

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

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