我在程序中声明了全局枚举类型,并希望程序中的各种函数返回该枚举类型的实例。这里是我的报关表:

#ifndef GLOBAL_H_
#define GLOBAL_H_
#include <SDL.h>
#include "LTexture.h"
#include "LButton.h"
#include "Initializationetc.h"

enum LButtonSprite
{
    BUTTON_SPRITE_MOUSE_OUT = 0,
    BUTTON_SPRITE_MOUSE_OVER_MOTION = 1,
    BUTTON_SPRITE_MOUSE_DOWN = 2,
    BUTTON_SPRITE_TOTAL = 2
};
...


但是,当我尝试构建返回“ LButtonSprite”的函数时,会发生以下情况:

#ifndef LBUTTON_H
#define LBUTTON_H
#include <SDL.h>
#include "Global.h"

class LButton
{
public:
    //Initializes internal variables
    LButton();

    //Sets top left position
    void setPosition(int x, int y);

    //Handles mouse event
    void handleEvent(SDL_Event* e);

    //Shows button sprite
    void render();

    LButtonSprite getCurrSprite();//here

private:
    //Button Position
    SDL_Point mPosition;

    //Button Sprite
    LButtonSprite mCurrentSprite; //and here.

};
#endif


好像Visual Studio误将函数原型LButtonSprite getCurrSprite();当作是声明为LButtonSprite类型的名为getCurrSprite()的变量一样。 VS提供的颜色编码(如上所示)似乎证实了这种怀疑。返回类型为蓝色,但LButtonSprite为浅蓝色,这是为变量保留的颜色。

不幸的是,问题不只是化妆品。我收到一堆C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int。我已在发生错误的行处向代码添加了注释。完整的错误日志包含在帖子的末尾。

我该如何纠正这个错误?

错误日志:

错误2错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 22 1 SDL2_tutorials
错误5错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 29 1 SDL2_tutorials
错误8错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 22 1 SDL2_tutorials
错误11错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 29 1 SDL2_tutorials
错误14错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ global.h 34 1 SDL2_tutorials
错误17错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 22 1 SDL2_tutorials
错误20错误C4430:缺少类型说明符-假定为int。注意:C ++不支持default-int c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 29 1 SDL2_tutorials
错误4错误C2146:语法错误:缺少';'在标识符'mCurrentSprite'之前c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 29 1 SDL2_tutorials
错误10错误C2146:语法错误:缺少';'在标识符'mCurrentSprite'之前c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 29 1 SDL2_tutorials
错误19错误C2146:语法错误:缺少';'在标识符'mCurrentSprite'之前c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 29 1 SDL2_tutorials
错误1错误C2146:语法错误:缺少';'在标识符'getCurrSprite'之前c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 22 1 SDL2_tutorials
错误7错误C2146:语法错误:缺少';'在标识符'getCurrSprite'之前c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 22 1 SDL2_tutorials
错误16错误C2146:语法错误:缺少';'在标识符'getCurrSprite'之前c:\ users \ adam \ documents \ visual studio 2013 \ projects \ sdl2_tutorials \ sdl2_tutorials \ lbutton.h 22 1 SDL2_tutorials

最佳答案

返回类型为蓝色


否-关键字为蓝色。为什么enumclasspublicprivate为蓝色?返回类型没有特殊的语法突出显示。您的代码中的问题是完全不相关的:

#ifndef GLOBAL_H_
#define GLOBAL_H_
#include <SDL.h>
#include "LTexture.h"
#include "LButton.h"


在定义LButton之前,最后一行包括(并因此声明了)enum类。从文件中删除该行,或在此之前定义枚举。

10-04 14:26