当创建带有多个参数的方法的类时,使用以下命令可能会很有帮助:有些参数是可选的。通过使用默认参数功能,您可以为参数设置默认值,当客户端代码未提供值时可以使用该默认值。
在您的例子中,您尝试使用成员变量 (initPos) 作为 MoveTo 成员函数的默认参数。但是,编译器发出错误,指示非静态数据成员的使用无效。
默认情况下,成员变量在方法的作用域中不可访问,因为它们被视为一部分对象的状态而不是方法的上下文。因此,默认情况下,成员函数中的参数只能依赖于类内或全局范围的元素。
要解决此问题,您需要诉诸方法重载。方法重载允许您创建具有不同签名的同一方法的多个版本。以下是如何在代码中实现它:
// Object.h class Object { public: ... void MoveTo(double speed); void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; };
// Object.c void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { // Everything is done here. }
通过定义 MoveTo 方法的两个版本,您可以有效地提供默认参数,而无需直接依赖成员变量。 MoveTo(double) 方法使用 initPos 值作为第二个参数调用 MoveTo(double, Point) 方法,允许您保留所需的功能并避免编译器错误。
以上是我可以在 C 方法中使用成员变量作为默认参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!