我正在尝试实现我认为使用C ++进行功能切换的功能。
上下文
这是针对使用PlatformIO开发的Arduino / ESP8266项目
期望的情景
用户禁用配置中的无线电通信。 ESP8266自行复位,读取新的配置文件并禁用无线电通信模块。
问题
很容易不实例化Radio类,但我不希望在应用程序中有深入的条件来检查Radio类是否被实例化。
问题
如何避免应用程序深层的功能切换条件?
代码示例
// FMV.cpp
void FMV::setup() {
this->connectionManager = new ConnectionManager(configController);
this->connectionManager->setup();
}
// ConnectionManager.cpp
void ConnectionManager::setup()
{
if (config.enableRadio)
{
this->radio = new Radio();
this->radio->setup();
delay(100);
}
}
// FMV.cpp
void FMV::loop()
{
// code
// HOW TO AVOID THIS?
if (this->connectionManager->radio != nullptr)
{
this->connectionManager->readRadioMessages();
}
// code
}