C++ 魔方求解:Thistlethwaite 算法实现中的 'cube' 未声明错误解决方法
在 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 著作权归作者所有。请勿转载和采集!