Код: Выделить всё
#include
#include
class IHardware
{
public:
virtual ~IHardware() = default;
virtual uint8_t GetHardwareData() const = 0; // I would to keep it pure virtual to beiong able to mock it
// I could use: uint8_t GetHardwareData() const { return 50; } and delete Hardware implementation class
};
class ISoftwareA : public IHardware
{
public:
virtual ~ISoftwareA() = default;
virtual uint8_t GetSoftwareData() const = 0;
};
class ISoftwareB : public IHardware
{
public:
virtual ~ISoftwareB() = default;
virtual std::string GetSoftwareData() const = 0;
};
class Hardware : public IHardware // I want to keep this to let the possibility to change the hardware implementation
{
uint8_t return_value_ = 50;
public:
uint8_t GetHardwareData() const override { return return_value_; }
};
class TestA final : public ISoftwareA, public Hardware
{
public:
uint8_t GetSoftwareData() const override { return 10; };
uint8_t GetHardwareData() const override { return Hardware::GetHardwareData(); } //
Подробнее здесь: [url]https://stackoverflow.com/questions/79272740/c-using-implementation-of-parent-class[/url]