新微赢技术网

标题: 想不明白,,,,, [打印本页]

作者: ■.王锋◇    时间: 2009-11-4 01:56
标题: 想不明白,,,,,
请帮我决解一下,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;
}
}
作者: 天泪离星    时间: 2009-11-4 01:56
而把它们放回类或者名字空间里写,为什么有可以

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()
{
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;
}
}
}
}
作者: √碧水寒潭    时间: 2009-11-4 01:56
如果可以的话,把完整代码发到我的邮箱。如果不清楚我的email 地址,发短信索取。
作者: 满天星    时间: 2009-11-4 01:56
hello@hotmail.com

你的邮箱是这个不``

我已经发过去了
作者: ♀鈊亂ゞ鎵伙    时间: 2009-11-4 01:56
看来你是个新来的,我现在给你的邮箱地址轻易是不给人的。
作者: 玲珑之翼    时间: 2009-11-4 01:56
Token_value是在namespace Lexer中声明及定义的,在空间外不能使用

后面那个还不清楚什么问题,你最好把编译器报出的错误信息贴上来




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2