Есть некоторый класс, который удобно реализовать как singleton. Как лучше инициализировать его поля(информация о том как их заполнять приходит извне)?
Адекватно ли решение заставляющее клиентский код вызывать некий метод init(parameters) перед первой попыткой получить инстанс данного singlton-a?
Если да, то рентабельнее ли при этом инстанцировать лишь в том самом методе init или это совершенно не критично?
Я бы, во избежание использования не инициализированного класса, сделал бы так.
class Singleton
{
private:
static std::unique_ptr<Singleton> instance;
// Конструкторы и оператор присваивания недоступны клиентам
Singleton(параметры конструктора) {...}
Singleton( const Singleton& );
Singleton& operator=( Singleton& );
public:
static Singleton* init(параметры конструктора) {
assert(instance == nullptr);
instance = std::make_unique<Singleton>(параметры конструктора);
return instance.get();
}
static Singleton* getInstance() {
assert(instance != nullptr);
return instance.get();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть сайт, нужно, чтобы при запуске программы нажималась кнопка на сайтеСайт не должен открываться в браузере
У меня есть горизонтальный RecyclerView и хотелось бы по бокам сделать стрелочки которые бы перемещали список на один элемент вперед, как этого...