【发布时间】:2021-04-03 20:17:27
【问题描述】:
我目前刚刚开始使用 C++ 进行编码,我正在从事的当前项目是制作控制台内国际象棋引擎类型的东西。下面的函数应该检查一个特定的方块上是否有一块,如果有,如果是白色的。 Board.grid 是一个二维字符串数组,其中" " 是一个空方格,"wR1" 是白车之一,"bQ1" 黑皇后等等。我在函数内部的两个 if 语句中都收到了错误 expected primary-expression before '.' token,并认为这与在“方字符串”上调用的 .at() 函数有关,但不知道为什么这会产生错误或可以做什么解决它。
如果有人能帮助我,我将不胜感激。提前致谢!
#include <iostream>
using namespace std;
struct Board {
string Grid[8][8] =
{
{"bR1", "bN1", "bB1", "bQ1", "bK1", "bB2", "bN2", "bR2"},
{"bp1", "bp2", "bp3", "bp4", "bp5", "bp6", "bp7", "bp8"},
{" ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", " ", " ", " ", " "},
{" ", " ", " ", " ", " ", " ", " ", " "},
{"wp1", "wp2", "wp3", "wp4", "wp5", "wp6", "wp7", "wp8"},
{"wR1", "wN1", "wB1", "wQ1", "wK1", "wB2", "wN2", "wR2"},
};
};
class Piece
{
public:
bool getSquare (int square[2])
{
bool isOccupied = false;
bool isWhite = false;
if (Board.grid[square[1]][square[0]].at(0) != ' '){isOccupied = true;};
if (Board.grid[square[1]][square[0]].at(0) == 'w'){isWhite = true;};
bool arr[2] = {isOccupied, isWhite};
return arr;
};
};
【问题讨论】:
-
minimal reproducible example 会替换很多词,同时这些词是无用的,因为不要透露有用的信息。
-
Board未定义。 -
bool arr[2] = ...和return arr;在显示的函数中没有任何意义。 -
作为一个关于您的错误的猜测,
Board.grid[square[1]][square[0]]不是具有at成员函数的对象。但由于我们不知道Board或Board.grid可能是什么,这只是一个猜测。 -
@JordvanEldik — 这对于您的代码可能已经足够了,但对于可重现的示例来说还不够。
标签: c++ function if-statement compiler-errors