免责声明:编程新手,即时学习。这是我的第一篇文章,如果问题没有写清楚,我们深表歉意。
我正在尝试完成有关构建国际象棋引擎的教程,但它是用 C 语言编写的,我正在尝试将其转换为 C++ 代码。代码的想法是输入一个字符并检索枚举的索引值。由于此代码,我收到编译错误。 我该如何解决这个问题,因为在尝试了不同的想法后我还不清楚。
例如std::cout << CHAR_TO_PIECE['k'];
预期输出为 11。
在"typedefs.h"
enum Piece {P, N, B, R, Q, K, p, n, b, r, q, k};
在"board.h"
extern const int CHAR_TO_PIECE[];
并在board.c
// convert ASCII character pieces to encoded constants
int CHAR_TO_PIECE[] = {
['P'] = P,
['N'] = N,
['B'] = B,
['R'] = R,
['Q'] = Q,
['K'] = K,
['p'] = p,
['n'] = n,
['b'] = b,
['r'] = r,
['q'] = q,
['k'] = k
};
最佳答案
您可以编写一个函数来为您的字符输入返回特定的枚举。
enum Piece {P, N, B, R, Q, K, p, n, b, r, q, k};
Piece charToPiece(char ch)
{
switch (ch) {
case 'P':
return P;
case 'N':
return N;
case 'B':
return B;
case 'R':
return R;
case 'Q':
return Q;
case 'K':
return K;
case 'p':
return p;
case 'n':
return n;
case 'b':
return b;
case 'r':
return r;
case 'q':
return q;
case 'k':
return k;
}
}
关于c++ - 如何检索基于 char 数组的枚举索引值?在 C++ (cpp) 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73804659/