能取到当前switch case的常量值吗?

downmooner 2015-01-10 12:29:55
	switch (i)
{
case 1:
case 2:
case 3:
{
fun(...);
}
break;
case 4:
{
fun2(...);
}
break;
...


问个奇葩的问题, case 1,2,3 的作用域里,能得到当前case的常量值么-.-?

我知道可能会被骂,只因为写了一大串各种模板..结果发现我忘记最基础的规则..要求参数是常量...哈哈哈..

请回答.
...全文
531 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bear234 2015-01-12
  • 打赏
  • 举报
回复
弱弱问一句 不是i么.........难道你非要取到常量才行???
ForestDB 2015-01-12
  • 打赏
  • 举报
回复
不就是i么?
赵4老师 2015-01-12
  • 打赏
  • 举报
回复
虽然想取到case后面的常量比较困难,但可以确信的一点就是: 在紧跟“case 常量”后面的第一句语句之前,该常量的值一定和i的值一样。
xiaohuh421 2015-01-12
  • 打赏
  • 举报
回复
switch (i) 这里i就得到的啊. 参数要求常量, 你可以强制转换 (const int)i 试试
njit_77 2015-01-12
  • 打赏
  • 举报
回复
这个可以自己手动赋值,不能自动取当前的i值
超级能量泡泡 2015-01-12
  • 打赏
  • 举报
回复
既然你写的是模板,那就用模板辅助类解析常量
野男孩 2015-01-11
  • 打赏
  • 举报
回复
当前case的值明显就是 i ,这还有啥好说的?!
z253642075 2015-01-11
  • 打赏
  • 举报
回复
他估计是要合并的case里想写一次函数调用,但是i要送进这函数的模板参数 这也是不行的。拥有不同的模板参数的函数,脱去C++外衣就是两个完全没关系的函数,你不可能在合并的case里调用。老老实实拆case吧。
lm_whales 2015-01-11
  • 打赏
  • 举报
回复
编译器能,你不能
Falleyes 2015-01-10
  • 打赏
  • 举报
回复
把 i 拿来用就可以了啊
yshuise 2015-01-10
  • 打赏
  • 举报
回复
为什么不能?在 case 1: i ==1; case 2: i == 2;
就想叫yoko 2015-01-10
  • 打赏
  • 举报
回复
不是i吗 ~~~
jacksonfan 2015-01-10
  • 打赏
  • 举报
回复
不懂,凑个热闹,学习一下
勤奋的小游侠 2015-01-10
  • 打赏
  • 举报
回复
拆开每个case写一个函数调用就行了。代码量也不多,为什么要合并起来呢?
FightForProgrammer 2015-01-10
  • 打赏
  • 举报
回复
要么就分开写,要么就记录一下所需。
FancyMouse 2015-01-10
  • 打赏
  • 举报
回复
他估计是要合并的case里想写一次函数调用,但是i要送进这函数的模板参数 这也是不行的。拥有不同的模板参数的函数,脱去C++外衣就是两个完全没关系的函数,你不可能在合并的case里调用。老老实实拆case吧。
ri_aje 2015-01-10
  • 打赏
  • 举报
回复
不能,你得自己记录一下,要么就对着 case 后面的常量,hard coding 一下。

64,654

社区成员

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

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