【发布时间】:2020-10-12 17:50:12
【问题描述】:
我在Player.h有这个代码
class Player {
friend void clearBoard();
private:
static char board[4][4][4];
};
这个代码在Player.cpp
char Player::board[4][4][4] = {};
void
clearBoard() {
for (byte i = 0; i < 4; i++)
for (byte j = 0; j < 4; j++)
for (byte k = 0; k < 4; k++)
board[i][j][k] = ' ';
}
所以在编译过程中我得到一个错误
Player.cpp:37:9: error: ‘board’ was not declared in this scope
37 | board[i][j][k] = ' ';
| ^~~~~
我在Player.cpp 中使用board 几乎还有一百次,每次使用Player:: 都会对可读性和我的神经产生负面影响。
有没有办法逃离这个地狱?
我试过了
-
using Player::board; -
using Player::board[][][]; -
用命名空间封闭我的类,然后使用它 命名空间。
没有任何影响。
所有建议,除了
“只需将
clearBoard()重新定义为static”
将不胜感激。
【问题讨论】:
-
“使用
Player::会对可读性产生负面影响”——不,不会。去做吧。 -
我在 if 语句中有 board[i][j][k] 。他们中的很多......
-
-
如果变量名太长,您可以随时使用
auto& x = some_super_long_variable_name;。虽然,输入更少!=可读性。您需要限定名称的来源是有原因的 -
您可以将
inline用于static成员和c++17,而不是显式初始化。课外
标签: c++ class static namespaces friend