我正在尝试创建一个包含2D数组和一些成员函数的结构体。
当我写下以下代码时:
当我写下以下代码时:
struct Board {
const int BOARDSIZE = 8;
bool data[BOARDSIZE][BOARDSIZE];
};
我得到了“非静态成员引用必须相对于特定对象”的报错。然而,当我写下以下代码时:
const int BOARDSIZE = 8;
struct Board {
bool data[BOARDSIZE][BOARDSIZE];
};
或者:
struct Board {
bool data[8][8];
};
没有错误。我已经搜索过了,但无法弄清楚为什么它不接受一个而接受另一个。我不想将BOARDSIZE声明为全局变量,因为我不希望它在一个大项目中漂浮,但为了灵活性起见,我也不想每次结构体的成员函数需要棋盘大小时都写上8。
有没有一种方法可以有一个表示棋盘大小的局部变量?
BOARDSIZE
是一个非静态成员。也就是说,它与类的实例"绑定"在一起(这就是错误信息的含义)。你可以通过将其定义为static inline const int BOARDSIZE = 8;
来实现你所需的功能。 - wohlstadBOARDSIZE
是一个非静态成员。也就是说,它与类的一个实例"绑定"在一起(这就是你错误信息的含义)。你可以通过将其定义为static inline const int BOARDSIZE = 8;
来实现你的需求。 - undefinedenum {BOARDSIZE = 8}; bool[BOARDSIZE][BOARDSIZE];
。但从技术上讲,BOARDSIZE
并不是一个变量 - 它是一个命名的枚举值。 - Peterconst
限定符声明的变量的值。 - user7860670enums
? - Swift - Friday Pie