#include <iostream> using namespace std; class Driver { public: virtual void startTransfer() = 0; virtual ~Driver() {} }; class SpiDriver : public Driver { public: void startTransfer() { cout << "SPI transfer started" << endl; } }; class I2cDriver : public Driver { public: void startTransfer() { cout << "I2C transfer started" << endl; } }; int main() { int mode; cin >> mode; SpiDriver spi; I2cDriver i2c; // Select the correct driver WITHOUT using dynamic allocation Driver* driver; (mode == 0) ? driver = &spi : driver = &i2c; // Call startTransfer() polymorphically driver->startTransfer(); return 0; }
Test Cases
Test Results
Input
0
Expected Output
SPI transfer started