#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;
Driver* driver= nullptr;
SpiDriver spi;
I2cDriver i2c;
if(mode ==0)
{
driver = &spi;
}
else
{
driver = &i2c;
}
driver->startTransfer();
// TODO:
// Select the correct driver WITHOUT using dynamic allocation
// Call startTransfer() polymorphically
return 0;
}
Expected Output
SPI transfer started