[問題] 請教陣列事先定義的問題。
小弟原本是用DEV C++在寫程式的,但是老師最近要接計畫需要用到visual c++
但是我把原本的程式轉到visual c++之後,陣列的定義卻出現下列問題。
舉例其中一個陣列出現的問題:
C2057: 必須是常數運算式
C2466: 無法配置常數大小為 0 的陣列,常數必須為大於 0 的整數
C2087: 'flag' : 遺漏註標
C2133: 'flag' : 未知的大小
原本的程式碼是要用switch依照丟進去不同的資料,參數也不一樣,如下列所示:
int max_cycle,NumCat,Dim,SMP;
string dataset;
int set,auto_machine;
for(auto_machine=1;auto_machine<=8;auto_machine++)
{
cout<<"auto:"<<auto_machine<<endl;
switch (auto_machine)
{
case 1:
NumCat=40;
max_cycle=150;
SMP=5;
break;
case 2:
NumCat=20;
max_cycle=100;
SMP=5;
break;
.....其他case.....
}
for(set=1;set<=15;set++)
{
switch(set)
{
case 1:
dataset= "1-German.txt";
Dim=25;
break;
case 2:
dataset= "2-Australian.txt";
Dim=15;
break;
.....其他case.....
}
接著開始/*變數宣告*/
int flag[NumCat][Dim];
...等等,類似這種的宣告.....
之後就會出現一開始所說的那些錯誤了,但是之前在DEV C++都不會有這種錯。
還有類似這種用迴圈去累加一個值,再把他丟入陣列中的程式也會出錯。
主要這行 int count_test_column=0;
for(k=0;k<(count_column/max_kfold);k++)
{
//cout<<"k: "<<k<<endl;
主要這行 count_test_column+=1;
fout2<<Data2D[k][Dim-1]<<" ";
for(j=0;j<(Dim-1);j++)
{
if(flag[i][j]==1)fout2<<j+1<<":"<<Data2D[k][j]<<" ";
}
fout2<<endl;
}
主要這行宣告時
double predict[count_test_column];
就會出現上面寫說必須是常數運算式...ETC的那些錯誤。
總結就是要怎麼在visual c++裡,陣列擺DIM這種讓它覺得是常數運算式的值。
有勞各位幫我解答一下,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.141.35.42
推
03/17 14:07, , 1F
03/17 14:07, 1F
→
03/17 14:09, , 2F
03/17 14:09, 2F
→
03/17 14:10, , 3F
03/17 14:10, 3F
→
03/17 15:59, , 4F
03/17 15:59, 4F
→
03/17 16:00, , 5F
03/17 16:00, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章