У меня есть класс Properties, который загружает некоторые свойства из файла. Я хочу иметь только один экземпляр свойств и быть доступным из всех классов. Вот что я сделал в очень Java духе:C++ static member deconstructor, вызываемый несколько раз
class Properties{
public:
static Properties getInstance();
~Properties();
private:
Properties();
static Properties instance;
}
Так класс имеет статический член сам по себе, который может мне получить доступ из функции GetInstance(). Затем я получаю различные функции для получения свойств объекта. Например.
Properties::getInstance().getUseDepthInpainting();
Странно, что только в первый раз, когда я пытаюсь получить доступ к собственности, я получаю правильное значение. Кроме этого, я получаю нулевые значения. Затем я перешел к положению печати в конструкторе, а другой - в деконструкторе. Хотя, как и ожидалось, конструктор вызывается только в первый раз, когда я вызываю getInstance(), деконструктор вызывается каждый раз, когда вызывается getInstance(). Может кто-то объяснить, почему это происходит, и каков правильный способ делать это?
Хотя ваша непосредственная проблема - это, вероятно, копии, которые вы создаете, я хотел бы указать, что это, вероятно, злоупотребление синглтонным шаблоном для чего-то, что не должно быть синглом. Синглтон следует использовать только тогда, когда существует технический предел количества экземпляров, например, при абстрагировании конечного физического ресурса. – Alex