在Visual Studio 2010中编译c ++程序时出错

时间:2011-01-31 20:00:11

标签: c++ genetic-algorithm genetic-programming

嘿伙计们,我似乎无法在Visual Studio 2010中编译我的以下c ++程序。我已经有相同代码的工作版本,所以我知道代码是正确的。但我不知道它是什么或如何编译的。

所以如果有人可以复制代码并尝试在VS 2010中编译它,我将不胜感激。

代码 -

http://codepad.org/4VtrVBdK

- 确实根据下面的评论进行了编辑..现在唯一的问题似乎与调用重载函数有关...那么如何去做呢?

2 个答案:

答案 0 :(得分: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"

这些内容均不属于本标准的一部分。如果你可以让它们编译,那只是因为你的编译器在预料到你的错误。但这仍然是一个错误。

答案 1 :(得分:0)

您似乎缺少using namespace std;