Heap-Free Polymorphic Driver

#include <iostream>
using namespace std;

class Driver {
public:
    virtual void startTransfer() = 0;
    virtual ~Driver() {}
};

class SpiDriver : public Driver {
public:
    void startTransfer() override {
        cout << "SPI transfer started" << endl;
    }
};

class I2cDriver : public Driver {
public:
    void startTransfer() override {
        cout << "I2C transfer started" << endl;
    }
};

int main() {
    int mode;
    // Read one integer value from input
    if (!(cin >> mode)) return 0;

    // Create both driver objects on the stack (Deterministic lifetime)
    SpiDriver spi;
    I2cDriver i2c;

    // Pointer to the base class to enable polymorphism
    Driver* selectedDriver = nullptr;

    // Select the appropriate driver at runtime
    if (mode == 0) {
        selectedDriver = &spi;
    } else if (mode == 1) {
        selectedDriver = &i2c;
    }

    // Invoke the driver function polymorphically
    if (selectedDriver != nullptr) {
        selectedDriver->startTransfer();
    }

    return 0;
}

Solving Approach

 

 

 

 

 

Upvote
Downvote
Loading...

Expected Output

SPI transfer started