我无法在 Visual Studio 2010 中编译我的以下 c++ 程序。我已经有相同代码的工作版本,所以我知道代码是正确的。但我不知道它是什么或如何编译的。
因此,如果有人可以复制代码并尝试在 VS 2010 中编译它,我将不胜感激。
代码:
新:
好的,我根据下面的评论进行了编辑。现在唯一似乎仍然存在的问题与对重载函数的调用有关。那么该怎么做呢?
我无法在 Visual Studio 2010 中编译我的以下 c++ 程序。我已经有相同代码的工作版本,所以我知道代码是正确的。但我不知道它是什么或如何编译的。
因此,如果有人可以复制代码并尝试在 VS 2010 中编译它,我将不胜感激。
代码:
新:
好的,我根据下面的评论进行了编辑。现在唯一似乎仍然存在的问题与对重载函数的调用有关。那么该怎么做呢?
所以我知道代码是正确的
你“知道”的都是假的。代码在很多方面都是错误的。这里只是一个例子:
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"
这些都不是标准的一部分。如果你能让它们编译,那只是因为你的编译器预测到了你的错误。但这仍然是一个错误。
看起来你不见了using namespace std;