C ++ - инициализация статического члена собственным методом - PullRequest
0 голосов
/ 25 апреля 2018

Можно ли инициализировать статический член собственным методом, например.initialize ()?

Пример:

class Foo
{
//some private variables
public:
static Bar example;
//some methods
}

Затем вызвать его в main.cpp как:

Foo::example.initialize(argument);

Конечно, это не работает.Кроме того, в нем отсутствует инкапсуляция, потому что переменная является публичной.Мне бы хотелось, чтобы это было приватно и инициализировалось только один раз.У меня нет другого выбора, кроме как инициализировать его методом.

1 Ответ

0 голосов
/ 25 апреля 2018

Способ по умолчанию для инициализации объекта должен быть по умолчанию его создателем.

Если это действительно необходимо, то можно использовать синглтон (имейте в виду, что это анти-шаблон: Что такоеanti-pattern? , также Что плохого в синглетах? )

class Singleton
{
public:
    static const Bar& getBarInstance()
    {
        static Bar bar;

        return bar;
    }
};

Это будет инициализировано только один раз.

...