(a)
typedef struct
{
  MotorData  mMotor;
  int        mAccelRate;
} MotorControlData;


(b)
typedef struct
{
    //----------------------------------------------
    // Set the new speed and an accel/decel rate to reach that speed.
    void (*SetNewSpeed)(MotorControlData*, int speed, int rate);

    //----------------------------------------------
    // Base class Motor methods extracted from its typedef.
    void (*InitPort)( MotorData*, int*);
    void (*SetSpeed)(MotorData*, int);
    int (*GetSpeed)(MotorData*);
    void (*SetDirection)(MotorData*, DIRECTION);
    DIRECTION (*GetDirection)(MotorData*);
} MOTOR_CONTROL;

extern MotorControlData* MotorControlCtor(void);
extern void MotorControlXtor(MotorControlData*);
extern MOTOR_CONTROL* MotorControl;

Example 4: (a) Class data structure; (b) typedef for the derived class vtable, and constructor/destructor and class vtable pointer definitions.

Back to Article