问题在于在ThistlethwaiteSolver类中定义了一个solveTopCross函数,但是该函数应该是ThistlethwaiteSolver类的成员函数,而不是solve函数的内部函数。应该将solveTopCross函数移出solve函数内部,并将其声明为ThistlethwaiteSolver类的public成员函数。修改后的代码如下:

class ThistlethwaiteSolver { public: void solve(CubeState state) { // 使用 Thistlethwaite 算法解决魔方 // TODO: 实现 Thistlethwaite 算法的解决逻辑

		// 第一步:完成顶层十字
		// TODO: 实现完成顶层十字的逻辑
		void solveTopCross(Cube& cube);

		// 第二步:完成顶层角块
		// TODO: 实现完成顶层角块的逻辑

		// 第三步:完成中层
		// TODO: 实现完成中层的逻辑

		// 第四步:完成底层十字
		// TODO: 实现完成底层十字的逻辑

		// 第五步:完成底层角块
		// TODO: 实现完成底层角块的逻辑

		// 第六步:完成魔方
		// TODO: 实现完成魔方的逻辑
	}
	
	void solveTopCross(Cube& cube) {
		// 定义一个数组,存储需要旋转的面和旋转方式
		pair<Color, Rotation> moves[] = {
			{GREEN, CLOCKWISE},
			{GREEN, DOUBLE},
			{GREEN, COUNTERCLOCKWISE},
			{BLUE, CLOCKWISE},
			{BLUE, DOUBLE},
			{BLUE, COUNTERCLOCKWISE},
			{ORANGE, CLOCKWISE},
			{ORANGE, DOUBLE},
			{ORANGE, COUNTERCLOCKWISE},
			{RED, CLOCKWISE},
			{RED, DOUBLE},
			{RED, COUNTERCLOCKWISE}
		};
	
		// 遍历所有可能的旋转方式,直到顶层十字完成
		for (int i = 0; i < 12; i++) {
			// 获取当前魔方状态
			CubeState state = cube.getState();
	
			// 获取需要旋转的面和旋转方式
			Color face = moves[i].first;
			Rotation rotation = moves[i].second;
	
			// 执行旋转操作
			cube.rotate(face, rotation);
	
			// 判断是否完成顶层十字
			if (state.up[0][1] == YELLOW && state.up[1][0] == YELLOW && state.up[1][2] == YELLOW && state.up[2][1] == YELLOW) {
				break;
			}
		}
	}

};

这样写报错是为什么应该怎么改class ThistlethwaiteSolver 	public		void solveCubeState state 			 使用 Thistlethwaite 算法解决魔方			 TODO 实现 Thistlethwaite 算法的解决逻辑			 第一步:完成顶层十字			 TODO 实现完成顶层十字的逻辑			void solveTopCrossCube& c

原文地址: https://www.cveoy.top/t/topic/b07c 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录