设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 986|回复: 5
打印 上一主题 下一主题

想不明白,,,,,

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 01:56:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请帮我决解一下,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;
}
}
2#
发表于 2009-11-4 01:56:03 | 只看该作者
而把它们放回类或者名字空间里写,为什么有可以

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;
}
}
}
}
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 01:56:04 | 只看该作者
如果可以的话,把完整代码发到我的邮箱。如果不清楚我的email 地址,发短信索取。
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 01:56:05 | 只看该作者
hello@hotmail.com

你的邮箱是这个不``

我已经发过去了
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 01:56:07 | 只看该作者
看来你是个新来的,我现在给你的邮箱地址轻易是不给人的。
回复 支持 反对

使用道具 举报

6#
发表于 2009-11-4 01:56:08 | 只看该作者
Token_value是在namespace Lexer中声明及定义的,在空间外不能使用

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 14:40 , Processed in 0.121662 second(s), 9 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表