3

我知道这个问题的常见答案,但由于某种原因,当我在 Code::Blocks 上使用正确的语法时出现错误,我将发布一个示例以表明我没有虚张声势:

  class BulletPlacer : sf::Drawable
  {
     public:
        BulletPlacer();
        BulletPlacer(const unsigned Quantity);

        ~BulletPlacer();
  };

那只是 hpp 文件的一小部分。

   BulletPlacer::BulletPlacer()
     :Amount(0), Min(0)
   {}

   BulletPlacer::BulletPlacer(const unsigned Quantity)
     :Amount(Quantity), Min(0)
   {
       Bullet shot;
       ShotVec.reserve(Amount);
       for(unsigned i = 0; i < Amount; ++i)
       { ShotVec.push_back(shot); }
   }

   BulletPlacer::~BulletPlacer() { PolVecV.clear(); ShotVec.clear(); }

那就是cpp。它编译得很好,直到我开始重构类并且我得到所有方法的错误。我还遇到了其他根本不存在的错误,并且我使用类中的所有功能得到了它们。我什至重新下载了一个 GCC 版本,却发现它给了我完全相同的结果。

这是错误日志的简化版本:

error: extra qualification 'BulletPlacer::' on member 'BulletPlacer' [-fpermissive]|
error: 'BulletPlacer::BulletPlacer()' cannot be overloaded|
error: with 'BulletPlacer::BulletPlacer()'|

它在所有功能中都像这样重复。这很烦人,因为我的 SFML 游戏就因为这个而根本无法前进,并且仅仅因为编译器对我生气而检查 300 行文件是否有可能的错误一点也不好玩。不,“BulletPlacer”使用的文件都没有得到这个。

更糟的是,一个完全不相关的类也会得到类似的东西:

error: cannot define member function 'BulletPlacer::Enemy::Enemy' within 'BulletPlacer'

当该类甚至不包含该文件时...

我正在使用 GCC 4.7.1

提前感谢我可能得到的任何帮助。

4

1 回答 1

2

这些错误意味着编译器认为这些定义是在类定义中的词法上找到的,这意味着缺少};或类似的东西。

从提供的信息中我只能说这些。

于 2012-11-20T02:21:24.030 回答