Я хочу создать параллельный объектный пул в C ++, возможный прототип как:
template<std::size_t OBJ_SIZE>
class Pool {
public:
template<typename T>
void new(std::shared_ptr<T> & product);
// more details...
};
Как мы автоматически возвращаем объект / память после того, как пользователь покончит с ним?
Моя идея состоит в том, чтобы иметь метод delete () в пуле, который вызывается в деструкторе продукта.
Есть ли лучший дизайн? например способ, где классы продуктов менее связаны с пулом (обратите внимание, что это общий пул). Любая идея приветствуется.
Если я правильно понимаю ваш вопрос, вам нужно вернуть shared_pointer с пользовательским удалением. Deleter будет знать, как удалить объект, используя метод deallocate () пула. Это стандартный подход к этой проблеме.
Других решений пока нет …