Home > Backend Development > C++ > How Can You Use Member Variables as Default Arguments in C Member Functions?

How Can You Use Member Variables as Default Arguments in C Member Functions?

Patricia Arquette
Release: 2024-11-11 08:58:03
Original
706 people have browsed it

How Can You Use Member Variables as Default Arguments in C   Member Functions?

Using Member Variables as Default Arguments in C

In C , you may encounter the need to make arguments for member functions optional. When no argument is provided, it would be preferable to use a member variable as the default.

Consider the following example:

class Object {
    ...
    void MoveTo(double speed, Point position);

protected:
    Point initPos;
    Point currPos;
};
Copy after login

The code attempts to assign the member variable initPos as the default value for the position parameter in the MoveTo function:

void Object::MoveTo(double speed, Point position = initPos) {
    currPos = postion;
}
Copy after login

However, this approach results in a compilation error:

error: invalid use of non-static data member 'Object::initPos'
Copy after login

The issue is that default argument expressions for member functions must rely solely on class or global scope elements. Additionally, the default argument must be defined in the method's declaration in the header file.

To resolve this, two overloads of the MoveTo method can be created:

void Object::MoveTo(double speed) {
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position) {
    // Implementation here.
}
Copy after login

The MoveTo method that takes a single argument calls the MoveTo method with two arguments, passing the initPos value as the default.

Object object;
object.MoveTo(10.0); // Calls MoveTo(10.0, initPos)
Copy after login

This approach adheres to the DRY principle by allowing the implementation of MoveTo to be defined only once.

The above is the detailed content of How Can You Use Member Variables as Default Arguments in C Member Functions?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template