如何创建这样的C ++函数,将enum作为参数/参数并返回它?

时间:2011-11-04 16:28:49

标签: c++ function parameters enums return

我有一些枚举定义为(在标题中):

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

那么如何定义枚举,以便它同时可以返回和函数参数?

2 个答案:

答案 0 :(得分:2)

你的typedef是不是偶然在一个类中声明了?如果是这样 - 你应该写class_name::http_request_parser_state class_name::parse_buffer( http_request_parser_state parser_state)

答案 1 :(得分:0)

您的代码中存在两个错误: 1. typedef声明是不必要的,因为所有现代c ++编译器都将枚举识别为特殊类型 2.枚举的声明是这样的:枚举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;
}

这应该有用。