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;
}
慕后森
TA贡献1802条经验 获得超5个赞
你需要建立一个表记录各个枚举数据对应的字符串,并与输入字符串逐一比较,第几个字符串就查表得到相应的枚举数据,所以有时还不如就用整型数据来替代枚举数据使用。
陪伴而非守候
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
- 3 回答
- 0 关注
- 854 浏览
添加回答
举报
0/150
提交
取消