枚举类型错误C2677
Enum type error C2677
我的问题是,我在Button.h文件中声明了这个枚举类型:
enum ButtonEnum
{
BUTTON_SPRITE_MOUSE_UP_RED = 0,
BUTTON_SPRITE_MOUSE_UP_VIOLET = 1,
BUTTON_SPRITE_MOUSE_UP_DBLUE = 2,
BUTTON_SPRITE_MOUSE_UP_GREY = 3,
BUTTON_SPRITE_MOUSE_UP_DGREEN = 4,
BUTTON_SPRITE_MOUSE_UP_LBLUE = 5,
BUTTON_SPRITE_MOUSE_UP_LGREEN = 6,
BUTTON_SPRITE_MOUSE_UP_YELLOW = 7,
BUTTON_SPRITE_MOUSE_UP_EMPTY = 8,
BUTTON_SPRITE_TOTAL = 9
};
稍后,我声明:
ButtonEnum mCurrentSprite;
并在Button.cpp中的其他函数中使用:
void Button::render()
{
SDLFunctions::render(mPosition.x,mPosition.y,SDLFunctions::gSpriteClips[mCurrentSprite] );
}
SDLFunctions:render看起来像:
void SDLFunctions::render( int x, int y, SDL_Rect* clip )
{
//Set rendering space and render to screen
SDL_Rect renderQuad = { x, y, mWidth, mHeight };
//Set clip rendering dimensions
if( clip != NULL )
{
renderQuad.w = clip->w;
renderQuad.h = clip->h;
}
//Render to screen
SDL_RenderCopy( gRenderer, mTexture, clip, &renderQuad );
}
和SDLFunctions:gSpriteClips是这样的:
SDL_Rect gSpriteClips[ 9 ];
在另一个函数中用一些值填充。切中要害。生成程序的结果如下:错误C2677:二进制"[":找不到采用类型"Button::ButtonEnum"的全局运算符(或者没有可接受的转换)
我的问题是:到底是什么?这是怎么回事?mCurrentSprite在生成器中得到了声明的起始值,每次调用Button::render时,它都会得到一些值,而不是NULL。有人能解决吗?谢谢
您的编译器试图告诉您(以一种非常不清楚的方式)您正在使用枚举对数组进行索引。这是不允许的——枚举有整数值,但它们不是整数类型。所以你需要铸造它:
SDLFunctions::render(mPosition.x, mPosition.y,
SDLFunctions::gSpriteClips[static_cast<size_t>(mCurrentSprite)]);
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 运算符重载:简单添加...错误 C2677:二进制"+":未找到采用类型 ___ 的全局运算符(或者不存在可接受的转换)
- 错误 C2677:二进制'+=':找不到采用类型 'Movie' 的全局运算符(或者没有可接受的转换)
- 枚举类型错误C2677