Reusing Base Initialization

#include <iostream>
using namespace std;

// TODO 1: Create BaseDriver class
class BaseDriver{
public:
   void initBase()
   {
    cout<<"Base driver init start"<<endl;
    cout<<"Base driver init complete";
   }
};
//         - Add function initBase()
//         - Prints base initialization messages

// TODO 2: Create SpiDriver class
class SpiDriver:public BaseDriver
{
    public:
    void initSpi()
    {
        initBase();
        cout<<endl;
        cout<<"SPI driver initialized";

    }


};


//         - Inherits publicly from BaseDriver
//         - Add function initSpi()
//         - Calls initBase()
//         - Prints "SPI driver initialized"

// TODO 3: Create I2cDriver class
class I2cDriver:public BaseDriver
{
    public:
    void initI2c()
    {
        initBase();
        cout<<endl;
        cout<<"I2C driver initialized";
    }
};
//         - Inherits publicly from BaseDriver
//         - Add function initI2c()
//         - Calls initBase()
//         - Prints "I2C driver initialized"

int main() {
    int mode;
    cin >> mode; 

    // TODO 4: If mode == 0, create SpiDriver and call initSpi()
    if( mode == 0)
    {
        SpiDriver s;
        s.initSpi();

    }
    // TODO 5: If mode == 1, create I2cDriver and call initI2c()
    else{
        I2cDriver i;
        i.initI2c();
    }

    return 0;
}

Solving Approach

 

 

 

 

Upvote
Downvote
Loading...

Expected Output

Base driver init start Base driver init complete SPI driver initialized