2016-08-08 3 views
-3

Например, у меня есть этот конструктор:C++ ошибка конструктора

member(char* name,char* lastName,int age, char* gender); 

и у меня есть это на моей основной функции для создания элемента.

member("John","Smith",20); 

Поскольку я только при условии, 3 из 4-х параметров я получаю ошибку: кандидата ожидает 4 аргумента, 3 предусмотренного. Как это исправить, так что даже если я пропустил параметр, он просто пропустит его.

+0

Используйте параметры со значениями по умолчанию. –

+0

Как мне это сделать? Работает ли это, если в моей основной функции я создаю 2 члена: например, член («Мэри», «Смит», «Женщина»); участник («Джон», «Смит», 20); –

+0

Ну, что вы хотите, когда вы называете это тремя этими аргументами? – juanchopanza

ответ

4

Необходимо указать значение по умолчанию для последнего аргумента. Что-то вроде:

member(char *name, char *lastName, int age, char* gender = NULL); 

Тогда, когда последний аргумент не указан, он примет значение по умолчанию NULL.

+0

Немного nitpicking здесь: Поощряйте использование 'nullptr' sir – WhiZTiM

+0

Это хороший момент! – grigor

+0

@grigor Я попробовал это, но попросил меня сделать значение по умолчанию для каждого параметра. и когда я делаю это, я задаю двусмысленную ошибку для вызова конструктора. –

1

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

Например, для вашей ситуации вы можете создать два конструктора с тем же именем (очевидно), за исключением того, что один из них принимает 4 параметра и обрабатывает их соответствующим образом, а другой занимает 3 и обрабатывает его по-своему.

Пример:

member(char name, char lastName, int age){ 
    //Do stuff here for the situation where 3 parameters are inputed 
} 

member(char name, char lastName, int age, char gender){ 
    //Do stuff here for the situation where 4 parameters are inputed 
} 
+0

Мне нужно использовать только один конструктор для этого @Bhaskar –

1

Вы можете предоставить несколько подписей для одной функции, например:

member(char* name, char* lastName, int age) 

и

member(char* name, char* lastName, int age, char* gender) 
Смежные вопросы