【问题标题】:extra qualification member GCC [closed]额外的资格成员 GCC [关闭]
【发布时间】:2012-11-20 02:03:27
【问题描述】:

我知道这个问题的常见答案,但由于某种原因,我在使用正确的语法时遇到错误,在 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

提前感谢您提供的任何帮助。

【问题讨论】:

  • 头文件中的类或结构缺少右大括号和/或分号?
  • 是的,当有很多看起来随机的错误时,通常是它的 1 个非常微不足道的标点符号问题。
  • 出现的第一个错误是什么?
  • 出现的第一个错误是在构造函数的额外限定中,只有当我尝试单独编译文件,而不是使用通用构建图标。
  • 我也一遍又一遍地检查我的代码是否有一些琐碎的东西(它经常发生),但到目前为止我还没有找到任何真正解决问题的东西。包括似乎也很好。我无计可施……

标签: c++ gcc compiler-errors


【解决方案1】:

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

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

【讨论】:

  • 在检查了我的 32 个文件中的每一个之后,我没有发现任何类似的东西,这并不奇怪,因为它在我尝试重构该特定类之前就已经编译了。鉴于我发布整个代码的项目的规模将是疯狂的,所以我真的不知道我还能提供什么......
  • @CarlosJimenezBermudez:你没有发布整个项目;你在一个完整的、最小的测试用例中重现了这个问题。这样做你几乎肯定会自己发现问题,这就是为什么它是预互联网调试阶段的关键步骤......
  • 我很清楚什么是最小且完整的代码示例,但当时我还没有找到问题的具体部分,并且受影响的两个文件各有 300 行,这仍然太多了。
  • 尝试从类内的声明中删除 BulletPlacer::。
  • @kyasar:现在可能有点晚了......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
相关资源
最近更新 更多