А я бы привёл другой пример. Да, с лишним сгенерённым кодом, но
может быть он понятнее "бедуинам"? class TUsbDevice
{
protected:
TUsbDevice(){}
public:
virtual void IrqHandler()=0;
void Reset();
};
class TUsbHSDevice: public TUsbDevice
{
public:
virtual void IrqHandler(){ /* High-speed handler */ }
};
class TUsbFSDevice: public TUsbDevice
{
public:
virtual void IrqHandler(){ /* Full-speed handler */ }
};
TUsbDevice *pDevice;
int main()
{
// Assagn available HS/FS hardware object.
pDevice = new TUsbHSDevice();
}
extern "C"
void USB_IRQ_HAndler()
{
pDevice->IrqHandler();
}
https://godbolt.org/z/je84rzz9K