-1

我写了一个包,在编译时遇到了“没有命名类型”的问题。

这是代码:skeleton.h

  #include "gp.h"

  ...       

  class Formula : public GP
  {
     ...
  };

  ...

  class FormulaPopulation : public GPPopulation
  {
     ...
     Formula* NthMyGP (int n) { return (Formula*) GPContainer::Nth (n); }
     ...
  };

当我编译时,编译器会指出 Formula(in FormulaPopulation) 没有命名类型,但是类 Formula 是在类 FormulaPopulation 之上定义的,我不知道为什么会发生这个错误......

如果您想了解更多信息,可以在此处下载软件包。(下载后解压这个文件,在“printNatural”目录下make,可以看到错误)

任何帮助,将不胜感激。

4

2 回答 2

2

您的 tarball 无法构建,因为缺少文件,但是有一个声明 extern vector<myFNode> Formula;会导致冲突。

非常令人困惑的是,显然可以定义Formula类而不会引起冲突,而无法使用它。

于 2012-10-08T21:37:47.243 回答
0

如果您复制和粘贴的代码与项目中的相同,则缺少分号:

  #include "gp.h"
  class Formula : public GP
  {
     ...
  }; // <-- HERE

  ...

  class FormulaPopulation : public GPPopulation
  {
     ...
     Formula* NthMyGP (int n) { return (Formula*) GPContainer::Nth (n); }
     ...
  }; // <-- HERE
于 2012-10-08T10:13:25.600 回答