【问题标题】:Error in compiling c++ program in Visual Studio 2010在 Visual Studio 2010 中编译 c++ 程序时出错
【发布时间】:2011-06-18 20:00:44
【问题描述】:

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

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

代码:

http://codepad.org/4VtrVBdK

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

【问题讨论】:

  • 如果你有编译错误,你应该剪切+粘贴到你的问题中。
  • 仅供参考,有更好的粘贴示例代码的方法。例如该站点不仅突出显示代码,还为您编译并运行它。codepad.org/cXvCUcPV
  • 我遇到了非常普遍的错误,我认为必须有人实际编译代码才能查看并理解错误。
  • @Assaf ;) thx for tht..我是新来的...
  • @user597272:哦,所以你给我们的文件甚至不是你要编译的代码?那么你如何期待任何有用的反馈呢?粘贴错误,因为我显然得到了与您不同的错误,因为我正在编译不同的文件。

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


【解决方案1】:

所以我知道代码是正确的

你“知道”的是假的。代码在很多方面都是错误的。这里只是一个例子:

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"

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

【讨论】:

  • 我更喜欢2.0 而不是(double)2。通常,演员表越少越好。但位移会更好。
  • hmmm..yeah..和给我发程序的同事通了电话...原来它实际上是用 vc6 编译的...现在问题是我怎样才能让它编译在 vs 2010 中......我正在使用 win 7,所以无法让 vc6 在其中正常工作......
  • @user:修复它。您应该能够相当容易地修复语法错误。
  • 我应该发布代码的工作可执行文件吗?我想,但由于我是新来的,我似乎不能发布多个超链接......所以如果我不得不去解决它???
  • @user:不要发布可执行文件。你甚至不应该首先发布超链接,我可能不应该下载它。您应该做的是在您的帖子中直接发布您的代码。
【解决方案2】:

您好像错过了using namespace std;

【讨论】:

  • blimey...实际上我错过了使用命名空间 std 进行复制;但这是我这边的一个错误.....即使使用命名空间仍然无法编译......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多