C++枚举类型

来源:百度知道 编辑:UC知道 时间:2024/05/17 13:53:29
定义一个枚举类型:
enum Token_value{
NAME, NUMBER, END,
PLUS='+', MINUS='-', MUL='*', DIV='/',
PRINT=';', ASSIGN='=', LP='(', RP=')'
};
然后有一个输入函数:
double number_value;
string string_vlaue;

Token_value get_token()
{
char ch = 0;
cin>>ch;

switch (ch) {
case 0:
return curr_tok = END;

case';':
case'*':
case'/':
case'+':
case'-':
case'(':
case')':
case'=':
return curr_tok=Token_value(ch);
case'0':case'1':case'2':case'3':case'4':
case'5':case'6':case'7':case'8':case'9':
case'.':
cin.putback(ch);

函数本身是要求返回枚举类型的,怎么能返回string呢?这一般会报错的,也许某些编译器不会,但至于返回什么,就看那个不报错的编译器怎么处理了。如果是返回枚举类型,那他不是返回一个完整的字符串,而只是返回你定义的枚举类型中那个字符串的值。

char 与 int的类型转换之后,char所表示的字符就是int型了。

思路好混乱啊,你不是让函数返回枚举类型了吗?怎么还要返回完整的名字和数字?你是不是想让调用这个函数的地方能够使用number_value和string_vlaue,并且返回还是枚举,以便主调函数能做进一步处理?如果是这样,别用函数内部的number_value和string_vlaue,通过函数参数传递进来,然后保存在参数里不就可以了?参数类型可以是指针,也可以是引用(看你用了cin,应该是用的c++喽).