我在程序中声明了全局枚举类型,并希望程序中的各种函数返回该枚举类型的实例。这里是我的报关表:
#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
最佳答案
返回类型为蓝色
否-关键字为蓝色。为什么enum
,class
,public
和private
为蓝色?返回类型没有特殊的语法突出显示。您的代码中的问题是完全不相关的:
#ifndef GLOBAL_H_
#define GLOBAL_H_
#include <SDL.h>
#include "LTexture.h"
#include "LButton.h"
在定义
LButton
之前,最后一行包括(并因此声明了)enum
类。从文件中删除该行,或在此之前定义枚举。