Как создать такую ​​функцию C ++, которая бы принимала enum в качестве параметра / аргумента, а также возвращала его? - PullRequest
1 голос
/ 04 ноября 2011

У меня есть некоторые перечисления, определенные (в заголовке):

typedef enum { METHOD, URL, URL_PARAM, URL_VALUE, VERSION, HEADER_KEY, HEADER_VALUE, BODY, OK } http_request_parser_state;

Я пытаюсь создать такую ​​функцию (в Cpp файле):

    http_request_parser_state class_name::parse_buffer( http_request_parser_state parser_state)
{
 return parser_state;
}

Но я получаю такие ошибки, как:

Error   1   error C2143: syntax error : missing ';' before 'parse_buffer'   
Error   5   error C2371: 'parse_buffer' : redefinition; different basic 
etc

Так как определить enum, чтобы он мог быть возвращаемым и аргументом функции одновременно?

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Случайно ли ваш typedef не объявлен внутри класса?Если это так - вы должны написать class_name::http_request_parser_state class_name::parse_buffer( http_request_parser_state parser_state)

0 голосов
/ 04 ноября 2011

В вашем коде есть две ошибки: 1. объявление typedef не нужно, потому что все современные компиляторы c ++ распознают перечисления как специальные типы 2. объявление enum происходит следующим образом: enum TypeName {Values} VariableNames;

Итак, для правильной работы ваш код должен выглядеть следующим образом:

enum http_request_parser_state { METHOD, URL, URL_PARAM, URL_VALUE, VERSION, HEADER_KEY, HEADER_VALUE, BODY, OK };

http_request_parser_state class_name::parse_buffer( http_request_parser_state parser_state)
{
 return parser_state;
}

И это должно сработать.

...