2013-12-19 3 views
0

Итак, у меня есть функция, которая принимает 2 разных входа.Различные входы для той же функции

Однако я столкнулся с ситуацией, когда мне очень нужен третий вход. В большинстве случаев я этого не делаю.

Решение, которое я имею в настоящее время, состоит в том, что фактическая функция, которую я хочу использовать, вызывается только двумя другими функциями. Эти две функции имеют одно и то же имя, но 1 принимает 3 ввода, а второй 2 (при этом он просто устанавливает нулевое значение на третий вход перед вызовом исходной функции).

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

Есть ли лучший способ сделать это? Плохо ли это так, как я это написал?

+0

Параметры по умолчанию –

+0

Не могли бы Вы проиллюстрировать проблему с некоторым кодом? Ответ будет зависеть от деталей. – juanchopanza

+0

Перегрузка, такая, как вы говорите, не кажется ТАКОЙ плохой :) –

ответ

5

аргументы по умолчанию:

void foo (int x, int y, int z = 0); 

Если вы не передаете третье значение, z будет 0 по умолчанию внутри функции.

+0

Ах, это здорово, спасибо! Быстрое отслеживание, однако, значение представляет собой перечисление, и я обычно просто декларировал его с помощью «LeaderLineEnum defaultLeader;». Знаете ли вы, как я буду реплицировать это как аргумент по умолчанию? – djcmm476

+0

В руководстве по стилю кодировки google есть некоторые сильные аргументы против аргументов по умолчанию (http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Default_Arguments). – arne

+0

@Incredidave просто положил '= defaultValue'. –

Смежные вопросы