Reusing Base Initialization

#include <iostream>
using namespace std;

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

// TODO 2: Create SpiDriver class
//         - Inherits publicly from BaseDriver
//         - Add function initSpi()
//         - Calls initBase()
//         - Prints "SPI driver initialized"
class SpiDriver: public BaseDriver{
    public:
    void initSpi(){
         initBase();
        cout<<"SPI driver initialized"<<endl;
    }
}; 

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

int main() {
    int mode;
    cin >> mode;
    
   
    // TODO 4: If mode == 0, create SpiDriver and call initSpi()
    // TODO 5: If mode == 1, create I2cDriver and call initI2c()
    switch(mode){                            
        case 0:
            class SpiDriver so;
            so.initSpi();
            break;
        case 1:
            class I2cDriver io;
            io.initI2c();
            break;
        default:
            cout << "Invalid  mode" << endl;
            break;
}

    return 0;
}

Solving Approach

 

 

 

 

Upvote
Downvote
Loading...

Input

0

Expected Output

Base driver init start Base driver init complete SPI driver initialized