2

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

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

代码:

http://codepad.org/4VtrVBdK

好的,我根据下面的评论进行了编辑。现在唯一似乎仍然存在的问题与对重载函数的调用有关。那么该怎么做呢?

4

2 回答 2

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"

这些都不是标准的一部分。如果你能让它们编译,那只是因为你的编译器预测到了你的错误。但这仍然是一个错误。

于 2011-01-31T20:13:15.723 回答
0

看起来你不见了using namespace std;

于 2011-01-31T20:05:55.537 回答