Gcc &引用;“一个声明中包含多个类型”;但是没有;丢失的

Gcc &引用;“一个声明中包含多个类型”;但是没有;丢失的,gcc,types,Gcc,Types,我试图用Code::Blocks(gcc编译器)编译我的程序。我得到一个错误:这是它抱怨的源文件: #ifndef BOT_H #define BOT_H #include "player.h" #include "timer.h" class BOTS; // forward decalaration of BOTS class BOT : public PLAYER { public: enum BotStatus{BotMoving,BotPursue,BotChasePow

我试图用Code::Blocks(gcc编译器)编译我的程序。我得到一个错误:这是它抱怨的源文件:

#ifndef BOT_H
#define BOT_H

#include "player.h"
#include "timer.h"

class BOTS; // forward decalaration of BOTS

class BOT : public PLAYER
{
public:
    enum BotStatus{BotMoving,BotPursue,BotChasePowerup};
    enum BotMovDir{Up,Down,Left,Right,Forward,Backward};
    enum BotSkill{Easy,Normal,Hard,Expert,Insane};
protected:
    BotStatus Status;  // this is the line it complaining about
    BotMovDir CurrentMov;
    TIMER CTimer;
    bool Stucked;
    BotSkill Skill;
    VECTOR3D AimTarget;
//  VECTOR3D ShotTarget;
    PLAYER *PursueObj;
    bool SameLevel;
    BOTS *Owner;
    bool PlayerHitMe;
    void OnDamage(double dmg,const wchar_t *Shooter,bool s);
    void OnReset();
public:
    BOT(BOTS *o,const wchar_t *botname) : PLAYER(botname), PlayerHitMe(false), Status(BotMoving), Skill(Easy), Owner(o)
    {
        PlayerInit();
    }
    void SetSkill(BotSkill bs) {Skill=bs;}
    void BotControl();
    void SetSameLevel(bool s) {SameLevel=s;}
    virtual ~BOT() {}
};

#endif
它抱怨第16行“一个声明中包含多种类型”,这让我发疯。我在谷歌上搜索了很多次,但常见的解决方案是“查找缺少的分号”。问题是根本没有缺少分号。它总是指向第16行(至少在受保护的之后),即使有注释,甚至超出eof(当我删除所有字段以便文件变小时)


(这个问题可能很小,我现在可能很累,所以我必须睡一觉。我希望明天早上有人会给我一些建议。)

你有一个名为
Status
的课程或其他UDT吗?如果您将成员的名称更改为
状态

是“
状态
”一个宏还是在其中一个标题中声明/定义的(或它们包含的任何内容)?

您显示给我们的文件是标题文件。您遇到的问题是在某个源文件的第16行,
#include
ing该头文件。你能复制并粘贴你收到的准确的错误消息,以及错误消息中引用的文件的相关部分吗?

上一个类声明中缺少分号,而不是它抱怨的分号。错误可能在“timer.h”中,但可能在“player.h”中,我是个傻瓜

代码::Blocks有时在开始编译源文件之前不保存源文件。MSVC++总是在编译之前保存它。这才是真正的问题


代码中似乎有一个状态宏。但这不是我自己喜欢的类型。可能是来自wxwidgets头的宏…

错误可能是因为在第一类定义之前不需要第二类正向声明。

当我注释掉该字段时,它开始抱怨下一行之前的一些警告(与此无关)和与此错误相关的其他一些错误(当然没有其他信息,所有信息都指向这一行)我重复:请复制并粘贴您收到的确切错误消息,并包括您认为不相关的警告——它们很可能是相关的。您收到的第一个错误/警告几乎总是最相关的。两个类的声明末尾都有分号。欢迎使用堆栈溢出。这是一个奇怪的answe问题的答案。这个问题在2009年3月得到了回答。有一个被接受的答案,也有一个罪过。你的答案并没有为这个问题提供一个新的或明确的解决方案;它是非常试探性的,并且真的对任何人都没有帮助。请尝试确保你的答案确实有新的贡献;人们会乐于接受-当他们投票时,投票给他们。