繁体   English   中英

C ++圆形结构

[英]C++ Circular Struct

好的,基本上,我在板上有一块结构,如下所示:

struct piece
{
    int value;
    bool revealed;
    bool canMove(int x, int y)
    {
        //This is where the problem is.
        if (board[x][y].value == 13) //If it's not occupied
            return true;
        else
            return false;
    }
};

//Define the board
piece board[x][y];

这给了我错误,例如'board':未声明的identifier 我怎样才能解决这个问题? 我试过将板声明放在该结构之前,但是它只是说那是一个未声明的标识符。

我意识到我可以只将板子作为参数传递,但是我有几个功能,这将花费比我更多的时间,因此,如果有其他解决方案,请告诉我!

这个问题是有关(但不相同),以质询

您必须将类定义与其成员函数的实现分离开来,以便编译器始终知道您在说什么:

struct piece
{
    int value;
    bool revealed;
    bool canMove(int x, int y);  // this is sufficient for the moment
};

piece board[x][y];   // now, compiler knows what a piece is. 

bool piece::canMove(int x, int y) 
{                    // now board is known as well
    if (board[x][y].value == 13) 
        return true;
    else
        return false;
}

声明canMove在类内部,然后在声明board之后在外部定义它。 此时,您可以成功参考board

您正在一块一块地混合。 这确实是错误的设计。

您的方法canMove属于单件。 因此,其定义应反映以下事实:

bool canMove() const
{
  return value == 13;
}

要获得想要从2D数组阵列中获取的内容,请执行以下操作:

board[x][y].canMove()

当然,您可以创建新的类Board来封装其行为,例如方法canMove带有2个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM