2012-11-20 41 views
3

我知道这个问题的常见答案,但出于某种原因,当我在Code :: Blocks上使用正确的语法时出现错误,我会发布一个示例来显示我不虚张声势:额外资格成员GCC

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

在此先感谢您提供的任何帮助。

+0

缺少大括号和/或分号的头文件中的类或结构? –

+0

yup,当有很多随机看错误时,通常是它的1个非常琐碎的标点符号问题。 –

+0

显示的第一个错误是什么? –

回答

2

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

这就是我所能提供的信息。

+0

在检查我的32个文件中的每个文件后,我发现没有任何类似的内容,这并不奇怪,因为它在我尝试重构该特定类之前进行了编译。鉴于我的项目大小,整个代码将是疯狂的,所以我真的不知道我还能提供什么...... –

+0

@CarlosJimenezBermudez:你不发布整个项目;您可以在完整的最小测试用例中重现问题。这样做几乎肯定会自己发现问题,这就是为什么它是互联网调试前阶段的关键步骤...... –

+0

我很清楚最小和完整的代码示例是什么,但我没有找到到那时问题的具体部分,以及受影响的两个文件都是300行,这仍然太多。 –