亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 912 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號