【发布时间】:2021-08-16 18:43:38
【问题描述】:
我正在尝试将我的一些枚举嵌套在结构中,以便我可以在涉及其他结构变量的函数中使用它们。我在新代码for循环中不断收到错误:
名称后跟 :: 必须是类或命名空间
但是,在不使用类或命名空间的旧代码 for 循环中,这不是问题。
为什么新代码会抛出这个错误?如何在不将结构转换为类的情况下修复它?
旧代码.h
const int LONGBUTTON_HEIGHT = 128;
const int LONGBUTTON_WIDTH = 256;
enum CreateForestButtonState { CREATE_DEFAULT, CREATE_HOVER, CREATE_INACTIVE, CREATE_PRESSED, CREATE_TOTAL };
旧代码.cpp
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include "oldcode.h"
SDL_Rect create_clips[CreateForestButtonState::CREATE_TOTAL];
for (int i = 0; i < CreateForestButtonState::CREATE_TOTAL; i++)
{
create_clips[i].x = i * LONGBUTTON_WIDTH;
create_clips[i].y = 0;
create_clips[i].w = LONGBUTTON_WIDTH;
create_clips[i].h = LONGBUTTON_HEIGHT;
}
int useCreate_Clip = CREATE_DEFAULT;
newcode.h
const int LONGBUTTON_HEIGHT = 128;
const int LONGBUTTON_WIDTH = 256;
struct Graphic
{
enum state {DEFAULT, HOVER, INACTIVE, PRESSED, TOTAL};
int use_clip;
int x;
int y;
int h;
int w;
};
newcode.cpp
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include "newcode.h"
Graphic create_plain;
create_plain.type = "long button";
create_plain.state::DEFAULT;
create_plain.use_clip;
SDL_Rect clips[create_plain.state::TOTAL];
for (int i = 0; i < create_plain.state::TOTAL; i++)
{
clips[i].x = i * LONGBUTTON_WIDTH;
clips[i].y = 0;
clips[i].w = LONGBUTTON_WIDTH;
clips[i].h = LONGBUTTON_HEIGHT;
}
create_plain.use_clip = create_plain.DEFAULT;
【问题讨论】:
-
create_plain.state::TOTAL->Graphic::state::TOTAL