我有一些枚举定义为(在标题中):
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
那么如何定义枚举,以便它同时可以返回和函数参数?
答案 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;
}
这应该有用。