在 C 中使用成员变量作为默认参数
在 C 中,您可能需要将成员函数的参数设置为可选。当没有提供参数时,最好使用成员变量作为默认值。
考虑以下示例:
class Object { ... void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; };
代码尝试将成员变量 initPos 指定为MoveTo 函数中位置参数的默认值:
void Object::MoveTo(double speed, Point position = initPos) { currPos = postion; }
但是,这种方法会导致编译错误:
error: invalid use of non-static data member 'Object::initPos'
问题是成员函数的默认参数表达式必须仅依赖于类或全局范围元素。此外,必须在头文件的方法声明中定义默认参数。
要解决此问题,可以创建 MoveTo 方法的两个重载:
void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { // Implementation here. }
MoveTo 方法使用单个参数调用带有两个参数的 MoveTo 方法,并传递 initPos 值作为默认值。
Object object; object.MoveTo(10.0); // Calls MoveTo(10.0, initPos)
此方法通过允许仅定义一次 MoveTo 的实现来遵守 DRY 原则。
以上是如何在 C 成员函数中使用成员变量作为默认参数?的详细内容。更多信息请关注PHP中文网其他相关文章!