возникла небольшая проблема с кодом, подобным следующему:
Абстрактный класс датчика (я использую полиморфизм):
class Sensor //abstract class
{
public:
Sensor(int id, std::string name):id_{id},name_{name}{}
private
int id_;
std::string name_;
}
Датчик температуры для реализации класса датчика (это может быть возможен любой датчик (давление, ускорение ... но мне нужен пример).
class Temperature : public Sensor
{
public:
Temperature (int id, std::string name):Sensor{id, name}
~Temperature(){}
};
Основной код:
std::string sensor = "Temperature";
//but sometimes this is the name of another sensor "Pressure" or "Speed" for example
std::vector<std::unique_ptr<Sensor>> sensorList
sensorList.push_back(std::make_unique<sensor>(01, "test"));
Проблема с линией sensor.push_back(std::make_unique<sensor>(01, "test"));
, я не могу знать, что будет в std::string sensor
, исключая тот факт, что это именно та строка, которую я напишу для вызова соответствующего датчика (например, для создания датчика температуры мне потребуется std::make_unique<Temperature>(01, "test")
, поэтому я пишу: std::string sensor = Temperature
).
Как я могу кодировать это, потому что я не могу кодировать кучу условий if, потому что датчики будут добавлены / удалены позже в программе, и я не знаю, какие из них.
Хорошего дня
Timtanium