|
请帮我决解一下,thank!!!
namespace Lexer
{
enum Token_value
{
NAME,NUMBER,END,PLUS='+',MINUS='-',MUL='*',DIU='/',PRINT=';',ASSIGN='=',
LP='(',RP=')'
};
Token_value curr_tok;
double number_value;
string string_value;
Token_value get_token();
}
Token_value Lexer::get_token() //我使用的是VC++,为什么这里会编译不通过呢!
//而其他的函数在名字空间外又可以?
{
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);
cin>>number_value;
return curr_tok=NUMBER;
default:
if(isalpha(ch))
{
cin.putback(ch);
cin>>string_value;
return curr_tok=NAME;
}
}
}
另外的程序也是一样
class Date
{
private:
int d,m,y;
static Date default_date;
public: //公用界面
enum Month
{
jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec
};
class Bad_date{}; //异常类
Date(int dd,Month mm,int yy);
//检查Date的函数:
int day()const;
Month month()const;
int year()const;
string string_rep()const;
void char_rep(char s[])const;
static void set_default(int dd, Month mm ,int yy);
//修改Date的函数:
Date &add_year(int n);
Date &add_month(int n);
Date &add_day(int n);
void show();
};
Month Date::month()const //老是说这里出错,我都怀疑是不是自己写错了
{
switch(m)
{
case 1:return jan;break;
case 2:return feb;break;
case 3:return mar;break;
case 4:return apr;break;
case 5:return may;break;
case 6:return jun;break;
case 7:return jul;break;
case 8:return aug;break;
case 9:return sep;break;
case 10:return oct;break;
case 11:return nov;break;
case 12:return dec;break;
default:
throw Bad_date();break;
}
} |
|