2011-01-31 102 views
3

嘿,我似乎無法得到我在Visual Studio 2010中編譯的以下C++程序。我已經有了相同代碼的工作版本,所以我知道代碼是正確的。但我不知道它是什麼或如何編譯的。編譯Visual Studio 2010中的C++程序錯誤

因此,如果有人可以只將代碼複製,並嘗試編譯它在2010年VS

代碼 - 我將不勝感激

http://codepad.org/4VtrVBdK

- 確定沒有編輯根據下面的評論..現在似乎只留下唯一的問題與調用重載函數有關...所以如何去做它?

+2

如果你有編譯錯誤,你應該把它們粘貼到你的問題中。 – 2011-01-31 20:02:04

+0

fyi,有更好的方法來粘貼示例代碼。例如此網站不僅突出顯示代碼,而且還編譯它併爲您運行它.. http://codepad.org/cXvCUcPV – 2011-01-31 20:04:14

+0

我得到非常普遍的錯誤,我認爲有人將不得不實際編譯代碼才能看到和理解錯誤。 – digster 2011-01-31 20:06:14

回答

0

看起來你錯過using namespace std;

2

,所以我知道該代碼是正確的

你 「知道」 什麼是假的。代碼錯誤很多方式。這裏僅是一個示例:

for(unsigned int i=0;i<GPNO;i++) //SORTING ACCORDING TO FITNESS 
    for(unsigned int j=i+1;j<GPNO;j++) 
     if((gp[i]->fitness)>(gp[j]->fitness)) 
     { 
      gp[i]->mycopy(tmp); 
      gp[j]->mycopy(gp[i]); 
      tmp->mycopy(gp[j]); 
     } 



for(i=1;i<=no;i++) 
{ 
    gp[i]->mycopy(gp[GPNO-i]); 
} 

在第二for環,i是未申報。我懷疑原始編譯器是VC6,它允許這樣做。

另一個問題是你打電話的方式pow。你用宏(這是公然邪惡的了)稱呼它,比如:

pf[i].frq+=(unsigned int)pow(2,2*PF-1); 

,編譯器不知道你腦子裏其中pow版本。例如宏爲此目的而邪惡的例子。這樣做:

pf[i].frq+=(unsigned int)pow(2.0,2*PF-1); 

或更好的是,擺脫宏。

的代碼是錯誤又如:

#include "stdlib.h" 
#include "conio.h" 
#include "math.h" 

這些都不包括是標準的一部分。如果你可以讓它們編譯,那只是因爲你的編譯器正在預測你的錯誤。但這仍然是一個錯誤。