Home Segments Index Top Previous Next

191: Mainline

Analogously, you do not need to assign a member-variable value directly. Instead, you can assign a member-variable value indirectly by defining a member function that does the actual value assigning. In the following tank_car class definition, for example, the addition of a definition for a member function named write_radius indicates that write_radius assigns a value to the radius member variable:

class tank_car {
  public:
    double radius, length;
    tank_car ( ) {radius = 3.5; length = 40.0;}
    tank_car (double r, double l) {radius = r; length = l;}
    void write_radius (double r) {radius = r;}  
    double volume ( ) {return pi * radius * radius * length;} 
}; 

With write_radius defined, you have another way to assign a value to the radius member variable of a particular tank_car object named t:

t.write_radius (4.0) 

Because the only purpose of write_radius is to assign a value to a member variable, write_radius is marked void, indicating that no value is to be returned.