2016-12-17 2 views
0

C++ В моем коде, я два перечислений, как показано ниже:Передача NULL для входного параметра типа перечисление -

enum myEnum{e1, e2}; 
enum myEnum2{e3, e4}; 

У меня есть прототип функции, как показано ниже:

void function myFunc(myEnum in_enum1, myEnum in_enum2){ 

    some-code-here; 

} 

В некоторых условиях, я должен оставить пустой второй входной параметр in_enum2.

Я пробовал передать ему NULL, но при этом компилятор дал ошибку инициализации параметра.

Как передать NULL параметру ввода типа перечисления?

Заранее спасибо.

ответ

1

Предполагаемый тип типа ussually int, они не указатели, поэтому они не могут быть пустыми.

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

enum myEnum{NULL, e1, e2}; 
enum myEnum2{NULL, e3, e4}; 

Затем назовите его литералами NULL перечисления.

myFunc(myEnum::NULL, myEnum2::NULL); 
+1

Это зависит от того, как определяется макрос NULL. Если он определен как '0', то он может быть неявно преобразован в (unscoped) перечисление. – MikeMB

+0

Хорошая точка, то я предлагаю перейти от 'myEnum :: NULL' к' myEnum :: null' –

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