Ссылка
От: CEMb  
Дата: 06.12.23 11:11
Оценка:
Всем привет
Тема про realtime и быстродействие.

Подозреваю, есть простое решение, может через boost или ещё проще.
Есть примерно такой класс

class Device;
class Object
{

private:
    std::unique_ptr<Device> device_{};

    const float& reloadTime_; // условно, это ссылка, по которой вопрос
};



Допустим, у объекта Object в некоторый момент инициализируется переменная device_, у девайса есть время перезагрузки, которое можно из него получить методами. И, например, у него есть метод, который возвращает const-ссылку на свою внутреннюю переменную float reloadTime_;

Если бы после создания device_ я мог бы проинициализировать Object::reloadTime_, то в коде мне было бы проще обращаться к ней, чем писать каждый раз device_->GetReloadTime(); с условием, что device_ уже проинициализирован.
В случае, если device_ не создан, я могу в конструкторе reloadTime_ проинициализировать какой-то статической переменной. Но я не могу переинициализировать ссылку после создания device_.

Чего хочется:
1. Удобства в коде. Поэтому любые другие идеи приветствуются тоже!
2. Оптимизации. Но даже с GetReloadTime() проблем бы не было: компилятор туда ровно ту же ссылку на переменную Device::reloadTime_ поставит. Единственный момент тут — это проверка, что device_ не nullptr. Таких объектов как reloadTime_ может быть много, и они активно используются в логике. Хотелось бы не добавлять условия, если есть возможность это не делать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.