在 C 中使用成员变量作为默认参数
在 C 中编写成员函数时,通常需要将某些参数设为可选,并且使用成员变量作为默认值。但是,如果成员变量不是静态的,这可能会触发编译错误。
考虑以下代码片段:
class Object { public: void MoveTo(double speed, Point position); protected: Point initPos; Point currPos; }; void Object::MoveTo(double speed, Point position = initPos) { currPos = postion; }
尝试编译此代码将导致错误消息:“无效”使用非静态数据成员“Object::initPos”。发生这种情况是因为默认参数表达式不能依赖于非类成员。
要解决此问题,您需要使用 MoveTo 方法的两个重载:
void Object::MoveTo(double speed) { MoveTo(speed, initPos); } void Object::MoveTo(double speed, Point position) { currPos = postion; }
单参数方法调用双参数方法,传入默认值。这允许单个实现 MoveTo,同时保持使用成员变量作为默认值的所需功能。
通过遵循这些技术,您可以有效地利用成员变量作为 C 成员函数中的默认参数,而无需面临编译错误。
以上是如何在 C 成员函数中使用成员变量作为默认参数?的详细内容。更多信息请关注PHP中文网其他相关文章!