“несколько типов в одном объявлении”, но нет ;пропавший без вести

StackOverflow https://stackoverflow.com/questions/600707

  •  03-07-2019
  •  | 
  •  

Вопрос

Я попытался скомпилировать свою программу с помощью 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 (когда я удаляю все поля, чтобы файл стал маленьким).

(Эта проблема может быть тривиальной, и, возможно, я сейчас устал, поэтому мне нужно поспать.И я надеюсь, что завтра к утру кто-нибудь даст мне какой-нибудь совет.)

Это было полезно?

Решение

У вас есть класс или какой-то другой UDT с именем Status?Что, если вы измените имя участника на Status_ ?

Другие советы

Является "Status" макрос или иным образом объявленный / определенный в одном из заголовков (или что бы они ни включали)?

Я дурак...

Code::Blocks иногда не сохраняет исходный файл перед началом компиляции файла.MSVC ++ всегда сохраняет его перед компиляцией.Это была настоящая проблема.

похоже, где-то в коде был макрос состояния.Но это был не в моем вкусе.Вероятно, макрос из заголовка wxwidgets...

Файл, который вы нам показали, представляет собой заголовок файл.Проблема, с которой вы столкнулись, находится на 16-й строке какого-то Источник файл, который является #includeредактирую этот заголовок.Можете ли вы скопировать + вставить точный вы получаете сообщение об ошибке, а также соответствующую часть файла, на которую ссылается сообщение об ошибке?

В последнем поле отсутствует точка с запятой. Предыдущая страница объявление класса, а не того, на которое он жалуется.Ошибка, вероятно, в "timer.h", но, возможно, и в "player.h".

Ошибка может быть связана с тем, что прямое объявление 2-го класса не требуется перед определением первого класса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top