2011-01-31 182 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" 

这些都不包括是标准的一部分。如果你可以让它们编译,那只是因为你的编译器正在预测你的错误。但这仍然是一个错误。