c ++变量类型选择 我使用一个库RTC_DS3231:RTC_I2C的库。 我已经定义了与RTC_DS3231相同的API类RTC_M41T83:RTC_I2C。 我想在运行时选择RTC硬件的类型...

问题描述 投票:0回答:1
的相同的API定义了。 我想在运行时选择RTC硬件的类型 该代码不起作用,因为

RTC_DS3231

是私人继承:
class RTC_DS3231 : RTC_I2C
I无法制作
RTC_I2C *rtc; if(use_RTC_M41T83) { rtc = new RTC_M41T83; } else { rtc = new RTC_DS3231; }

继承

class RTC_DS3231 : RTC_I2C

,因为我无法修改的库中的声明。
在C ++中解决这是什么好方法? 我知道在运行时选择

C++变量类型选择 但是它不起作用,因为继承是
public

您基本上有2个选项:

class RTC_DS3231 : RTC_I2C

private

自己添加抽象
std::variant<RTC_M41T83, RTC_DS3231>

c++
1个回答
0
投票
/*const*/auto rtc_var = use_RTC_M41T83 ? std::variant<RTC_M41T83, RTC_DS3231>{RTC_M41T83{}} : std::variant<RTC_M41T83, RTC_DS3231>{RTC_DS3231{}}; std::visit([/*..*/](auto& rtc){ return rtc.some_method(/*..*/); }, rtc_var);

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.