为了账号安全,请及时绑定邮箱和手机立即绑定

CString作为函数的参数传递,如何与函数中的枚举变量的元素匹配呢?

CString作为函数的参数传递,如何与函数中的枚举变量的元素匹配呢?

慕码人2483693 2019-02-05 10:06:37
double CBeamWSlab::itest_enum(CString sss){ double b;enum STR {C15,C20};double fc[2]={11,22};STR str=sss;b=fc[str];return b;}利用ComboBox选择是C15或C20,然后该字符串作为函数的参数,利用枚举变量,为C15,返回11.000000,是C20返回22.000000。编译显示“error C2440: “初始化”: 无法从“CString”转换为“CBeamWSlab::itest_enum::STR”1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符”问题出在这一句“ STR str=sss;”,作为字符串的C15或C20如何和枚举元素相匹配呢?
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

sss是CString类型,不是枚举enum类型;而且enum的实际是int类型;需要把CString进行判断,然后再赋值;
if(sss == "C15")
{
STR str = C15;

}
else if(sss == "C20")
{
STR str = C20;

}



查看完整回答
反对 回复 2019-03-25
?
慕后森

TA贡献1802条经验 获得超5个赞

你需要建立一个表记录各个枚举数据对应的字符串,并与输入字符串逐一比较,第几个字符串就查表得到相应的枚举数据,所以有时还不如就用整型数据来替代枚举数据使用。

查看完整回答
反对 回复 2019-03-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

如果选项多,可以用switch{case:...}

另外,enum在使用中就是存在这样的问题;
当然你也可以这样定义enum:
enum STR{C15=15,C20=20};
然后再判断输入的sss的时候进行转换成int,然后进行比较;
char *ch=sss.GetBuffer(sss.GetLength()); 
int a = atoi(ch+1); // 把字符串转换成int类型,字符串的第一位“C”去掉;
STR str = a; // 把字符串转换出来的int值赋值给enum的对象str


查看完整回答
反对 回复 2019-03-25
  • 3 回答
  • 0 关注
  • 854 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信