全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3520
推到 Plurk!
推到 Facebook!

使用switch產生case bypasses initialization of local variable的錯誤?

答題得分者是:暗黑破壞神
sunwingman
一般會員


發表:26
回覆:47
積分:14
註冊:2008-05-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-05-29 10:58:06 IP:61.61.xxx.xxx 訂閱
以下是我的程式碼:


[code cpp]
int DataNum;
double XX,YY,ZZ,refWY;

TCursor xCursor;
xCursor = this->Cursor;
Screen->Cursor = (TCursor)crHourGlass; //讓程式執行時,顯示漏斗鼠標

XX = (XEdt->Text=="")?0:StrToInt(XEdt->Text);
YY = (YEdt->Text=="")?0:StrToInt(YEdt->Text);
ZZ = (ZEdt->Text=="")?0:StrToInt(ZEdt->Text);
refWY = (WYEdt->Text=="")?0:StrToInt(WYEdt->Text);
DataNum = (NumEdt->Text=="")?0:StrToInt(NumEdt->Text);

ifstream Datafile(TargetEdt->Text.c_str());
TargetData = new double[DataNum*3];
XYZData = new double[DataNum*3];

for(int i=0; i Datafile >> TargetData[i];

Datafile.close();


switch(ColorModel)
{

case 0:

for(int i=0; i TargetData[i 2]=TargetData[i 2]/refWY;

for(int i=0; i {
if(TargetData[i 1] == 0)
{
XYZData[i] = 0;
XYZData[i 1] = 0;
XYZData[i 2] = 0;
}
else
{
XYZData[i] = 100*((TargetData[i]*TargetData[i 2])/TargetData[i 1]);
XYZData[i 1] = 100*(TargetData[i 2]);
XYZData[i 2] = 100*(((1-TargetData[i]-TargetData[i 1])*TargetData[i 2])/TargetData[i 1]);
}

}

AnsiString str1 = ExtractFilePath(ParamStr(0)) "\\RightXYZ.txt"; //用ExtractFilePath抓取程式目前執行目錄
ofstream outfile1(str1.c_str());


for(int i=0; i {
outfile1 << XYZData[i] << ' '
<< XYZData[i 1] << ' '
<< XYZData[i 2] << endl;
}

outfile1.close();
delete[] XYZData;
break;

case 1:
ShowMessage("未建立");
break;
}
[/code]

不過編譯時會產生case bypasses initialization of local variable的錯誤
有點不是很懂他的意思,所以請教一下各位
先謝謝大家~
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-05-30 08:34:41 IP:140.116.xxx.xxx 訂閱
case 裡面不能宣告變數.
------
FPGA驗證, FPGA開發平台, http://smims.com
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-05-30 08:50:20 IP:122.118.xxx.xxx 未訂閱
case  裏面不是不能宣告變數.
而是在裏面宣告的,它的有效範圍只在這個 case 裏面而已.

===================引 用 ikk 文 章===================
case 裡面不能宣告變數.
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-05-30 09:03:59 IP:140.116.xxx.xxx 訂閱
你的 ColorModel 是不是一直是固定值??
------
FPGA驗證, FPGA開發平台, http://smims.com
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-05-30 10:20:26 IP:60.249.xxx.xxx 未訂閱
試試
switch...
{
case ..
{
// your code
}
case ..
{
}
}
這種寫法吧。
sunwingman
一般會員


發表:26
回覆:47
積分:14
註冊:2008-05-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-05-30 13:17:48 IP:61.61.xxx.xxx 訂閱
回ikk:

我的ColorModel的值會隨我在combobox的選擇而有改變
sunwingman
一般會員


發表:26
回覆:47
積分:14
註冊:2008-05-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-05-30 13:22:56 IP:61.61.xxx.xxx 訂閱
回暗黑破壞神版大:

用你的方法果然就可以了
不過這是不是BCB她裡面的問題阿
因為我看一般C的書
在case裡面應該是不用加{ }這個的

很感謝暗黑版大及ikk~
系統時間:2024-03-29 17:11:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!