在 ThistlethwaiteSolver 类中的 solveTopCross 函数中,需要使用 Cube 对象 cube 来调用 rotate 函数,但是在函数中未定义 cube 对象,因此会报错 'cube' was not declared in this scope。需要在函数中声明一个 Cube 对象,并将其作为参数传入函数中,或者将 cube 对象作为 ThistlethwaiteSolver 类的成员变量来定义并初始化。例如:

class ThistlethwaiteSolver {
	private:
		Cube cube;
	public:
		void solve(CubeState state) {
			// ...
		}

		void solveTopCross() {
			// ...
			cube.rotate(face, rotation);
			// ...
		}
};

解决方法

  • 在函数中声明一个 Cube 对象,并将其作为参数传入函数中:
void solveTopCross(Cube& cube) {
	// ...
	cube.rotate(face, rotation);
	// ...
}
  • 将 cube 对象作为 ThistlethwaiteSolver 类的成员变量来定义并初始化:
class ThistlethwaiteSolver {
	private:
		Cube cube;
	public:
		void solve(CubeState state) {
			// ...
		}

		void solveTopCross() {
			// ...
			cube.rotate(face, rotation);
			// ...
		}
};

建议

  • 使用成员变量来定义 cube 对象,这样可以避免在每个函数中都传递 cube 对象,提高代码的可读性和可维护性。
  • 在 solveTopCross 函数中,可以使用局部变量来存储需要旋转的面和旋转方式,而不是使用全局变量 moves 数组,这可以提高代码的安全性。

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

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