额外资格成员GCC

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

提前感谢您的任何帮助。


头文件中的类或结构体缺少闭合大括号和/或分号? - Some programmer dude
最先出现的错误是什么? - Karthik T
首先出现的错误是在构造函数的额外限定符中,当我尝试单独编译文件而不是使用常见的构建图标时,会出现“无法在'BulletPlacer'内定义成员函数'BulletPlacer::Enemy::Enemy'”的错误。 - Carlos Jimenez Bermudez
我仔细检查了很多次,发现实际上它只是一行注释,而 }; 在下一行。它也有通常的着色。 - Carlos Jimenez Bermudez
不好意思 - 请等待您可以发布的时间。 - Lightness Races in Orbit
显示剩余9条评论
1个回答

2
错误提示表明编译器认为这些定义在类定义内部被找到,这意味着缺少一个“};”或其他类似的东西。
根据提供的信息,这就是我所能说的。

在检查了我所有的32个文件之后,我没有发现任何类似的问题,这并不奇怪,因为在尝试重构特定类之前,它确实编译过。考虑到我的项目规模,发布整个代码将是疯狂的,所以我真的不知道还能提供什么... - Carlos Jimenez Bermudez
@CarlosJimenezBermudez:你不需要发布整个项目;你只需要在一个完整的、最小化的测试用例中重现问题。这样做,你几乎肯定会自己找到问题,这也是在互联网调试阶段前的关键步骤... - Lightness Races in Orbit
我很清楚什么是最小和完整的代码示例,但当时我还没有找到问题的具体部分,而且受影响的两个文件都有300行,这仍然太多了。 - Carlos Jimenez Bermudez
尝试从类内声明中移除 BulletPlacer::。 - kyasar
@kyasar:可能现在有点晚了... - Lightness Races in Orbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接