如何让枚举类型不继承默认的Int

chen_xizhang 2009-06-08 02:58:02
大家好,我刚学习C++不太久,关于枚举类型,我有一个疑问

默认情况下,枚举类型是继承自int的,它所占的空间是4个字节。但是很多时候,我们没有必要用这么大的空间,那么有什么办法让枚举继承其他的类型吗?例如char

enum City{beijing,shanghai,nanjing};


在C#中,我们可以直接修改eunm 后面的继承关系就可以了

enum City:byte{beijing,shanghai,nanjing};

我发现在C++中定义枚举不能用中文字,例如下面这样的就会编译出错
enum City{北京,上海,南京};

这个问题又该如何解决呢?

谢谢
...全文
594 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dannylee322 2010-03-30
  • 打赏
  • 举报
回复
如果想把一个int转化为enum,该怎么做?
lambert_s 2009-06-09
  • 打赏
  • 举报
回复
接分来咯~
嘿嘿
chen_xizhang 2009-06-08
  • 打赏
  • 举报
回复
谢谢各位。以前很少在CSDN发贴讨论,这次来感觉这里气氛不错,大家都很有热情。谢谢

这个问题先讨论到这里。以后有问题继续向大家请教吧

【备注】我很久不用这个帐号,可用分不多。大家不要见怪,呵呵
fairchild811 2009-06-08
  • 打赏
  • 举报
回复
好像还不行.定义宏的话也不节约空间吧,因为要几个变量
feelang 2009-06-08
  • 打赏
  • 举报
回复
先向搂住学习
关于不能使用汉字我的理解,是编译器无法为汉字建立符号表。
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chen_xizhang 的回复:]
默认是整型。因为我在C#中可以改这个继承类型,例如改成byte(只占一个字节),所以想问一下C++是怎么处理这个问题
[/Quote]
C++目前还没有这个功能。
chen_xizhang 2009-06-08
  • 打赏
  • 举报
回复
默认是整型。因为我在C#中可以改这个继承类型,例如改成byte(只占一个字节),所以想问一下C++是怎么处理这个问题
  • 打赏
  • 举报
回复
你sizeof看看
我记得是容纳的最小整形。
forwrj 2009-06-08
  • 打赏
  • 举报
回复
可以用宏,
定义如下:
#define CITY_BEIJING (1)
#define CITY_SHANG (2)
#define CITY_..... ...

typedef unsigned char uint8;
用的时候可以如下:

uint8 DefaultCity = BEIJING;
mymtom 2009-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ameyume 的回复:]
C/C++ codeenumCity
{
北京,
上海,
南京
};

...
City city;
city=北京;
cout<<"city:"<<city<<endl;

cin>>a;
[/Quote]
好强啊,一般的编译器可搞不定。
chen_xizhang 2009-06-08
  • 打赏
  • 举报
回复

哦,好的。
关于修改继承关系的问题,大家有其他好的见解吗,谢谢
hjjdebug 2009-06-08
  • 打赏
  • 举报
回复
vc6 编译器不支持中文变量,没有办法解决!
解决办法是升级编译器,到vs2005 就可以了。
chen_xizhang 2009-06-08
  • 打赏
  • 举报
回复
谢谢。我想这个问题是否有解决方法呢?
我是用VC 6
ameyume 2009-06-08
  • 打赏
  • 举报
回复
VS2005里enum可以用中文,不知其他里面能不能用
ameyume 2009-06-08
  • 打赏
  • 举报
回复

enum City
{
北京,
上海,
南京
};

...
City city;
city = 北京;
cout<<"city:"<<city<<endl;

cin>>a;
ltc_mouse 2009-06-08
  • 打赏
  • 举报
回复
如果你不会大量使用枚举数组,空间的差别应该不用太多考虑吧~
C++的枚举,枚举值在编译之后可以看做一个常数了,目前似乎是不支持中文的;不能像C#那样可以判断某个值在不在枚举里面,更不能直接转成枚举值对应的名称字符串~~

想指定类型,又有点像枚举,可以考虑常量定义,如const BYTE BEIJING = 0; const BYTE SHANGHAI = 1;
内容概要:本文详细介绍了一种融合灰狼优化算法(GWO)、BP神经网络与AdaBoost集成学习的复合预测模型,旨在通过Matlab代码实现高效、高精度的非线性系统预测。该模型首先利用GWO算法优化BP神经网络的初始权重与阈值,有效缓解传统BP网络易陷入局部最优、收敛速度慢的问题;随后引入AdaBoost集成策略,通过对弱学习器的迭代加权训练,进一步提升模型的泛化能力、鲁棒性与预测稳定性。该方法适用于能源、环境、金融等领域的时间序列预测任务,文中提供了完整的算法实现流程与案例分析,便于科研人员复现、验证并拓展至其他应用场景。; 适合人群:具备一定机器学习理论基础与Matlab编程能力,从事科研工作的研究生、高校教师及工程技术人员,尤其适合工作1-5年、致力于发表高水平学术论文的研发人员。; 使用场景及目标:①解决传统BP神经网络在复杂数据下收敛缓慢、精度不足的问题;②构建高精度、强鲁棒性的预测模型,服务于科研项目申报、高水平论文撰写或工程实际预测需求;③深入理解GWO优化机制、AdaBoost集成思想及其在神经网络中的融合应用,掌握智能优化与集成学习的协同建模范式。; 阅读建议:建议读者结合提供的Matlab代码逐模块实践,重点剖析GWO的种群更新机制、BP网络的结构设计与训练过程、AdaBoost的误差反馈与权重调整逻辑,同时尝试将模型迁移至风电预测、负荷预测等具体场景,以深化理解并激发创新研究思路。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧