Расширьте шаблон синглтона, чтобы разрешить более одного экземпляра - PullRequest
0 голосов
/ 07 декабря 2011

Как мы можем расширить метод singleton, чтобы разрешить более одного экземпляра в C ++. Например, как мы можем использовать шаблон синглтона, чтобы гарантировать, что максимум 5 объектов класса созданы или разрешены

1 Ответ

1 голос
/ 07 декабря 2011

Шаблон синглтона не гарантирует, что может быть создан максимум одного объекта, он создает один объект при инициализации программы и уничтожает его при завершении программы.

Используйте фабричную функцию для управления созданием объекта, представляющего ограниченный ресурс.

class limited {
private:
    static int instance_count;

    limited() { // users cannot directly call the constructor
        ++ instance_count;
    }

    limited( const limited & ); // do not implement so users cannot copy

public:
    ~limited() {
        -- instance_count;
    }

    static limited make() { // this factory function must be used instead
        if ( limited::instance_count >= 5 ) {
            throw std::runtime_error( "some kind of overflow" );
        }
        return limited();
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...