将结构的枚举传递给其他功能并分配值

Passing an enum of a structure to other functions and assigning the values

本文关键字:功能 其他 分配 结构 枚举      更新时间:2023-10-16

我正在用C 编写蛇游戏,我有一个蛇的结构,其中包含数据,例如x位置,y位置,方向等。

我都可以正常工作,将所有数据设置为整数,我只是想将某些数据类型更改为Enum的数据,因为它看起来很整洁,更易于理解。我尝试了很多东西,在网上看,但我似乎找不到任何东西。

这是一些结构:

struct SnakeSection
{
    int snakePosX;
    int snakePosY;
    int SectionType;
    // Tail = 0, Body = 1, Head = 2
    int animation;
  enum Direction
  {
      Up = 0,
      Right = 1,
      Down = 2,
      Left = 3
  };
};

我试图尝试将一个方向之一传递到另一个功能的尝试:

void PlayerSnake::createSnake()
{
// Parameters are direction, x and y pos, the blocks are 32x32
addSection(SnakeSection::Direction::Right, mStartX, mStartY, 2);
}

然后,我尝试将方向设置为在该功能中传递的方向:

void PlayerSnake::addSection(SnakeSection::Direction dir, int x, int y, int type)
{
    //Create a temp variable of a Snake part structure
    SnakeSection bufferSnake;
    bufferSnake.Direction = dir;
    bufferSnake.animation = 0;
    //is it head tail or what? This is stored in the Snake section struct
    //TODO Add different sprites for each section
    bufferSnake.SectionType = type;
    //assign the x and y position parameters to the snake section struct buffer
    bufferSnake.snakePosX = x;
    bufferSnake.snakePosY = y;
    //Push the new section to the back of the snake.
    lSnake.push_back(bufferSnake);
}

错误:无效使用枚举蛇:: Direction

谢谢

以下行上的错误...

bufferSnake.Direction = dir;

...是有理由的,除了声明enum类型外,您仍然必须拥有一个类成员变量来存储它:

struct SnakeSection
{
    int snakePosX;
    int snakePosY;
    int SectionType;
    // Tail = 0, Body = 1, Head = 2
    int animation;
  enum Direction
  {
      Up = 0,
      Right = 1,
      Down = 2,
      Left = 3
  };
  Direction direction_; // <<<<<<<<<<<<<< THAT'S WHAT'S MISSING IN YOUR CODE
};

并参考

bufferSnake.direction_= dir; // <<<<<<<<<<<<<< THAT'S THE MEMBER VARIABLE YOU'LL 
                             //                HAVE TO REFER TO!