метод повышения object_pool - PullRequest
3 голосов
/ 08 апреля 2010

Я заинтересован в использовании класса Boost object_pool для повторного использования памяти для набора видеокадров.

boost::object_pool< VideoFrame > FramePool;

Теперь класс VideoFrame имеет два конструктора. Первая версия конструктора принимает 4 аргумента, а вторая - 6 аргументов / параметров.

Для каждого «нового» видеокадра, который выделен, я бы хотел вызвать конструктор объекта, используя версию с 4 или 6 параметрами. Например:

//VideoFrame *F = new VideoFrame(IdeckLinkOutput, &R, PixelFormat, FrameFlags);
VideoFrame *F = FramePool.construct(IdeckLinkOutput, &R, PixelFormat, FrameFlags);

При построении MSVS 2005 я получаю сообщение об ошибке:

error C2660: 'boost::object_pool<T>::construct' : function does not take 4 arguments

Согласно документации по методу 'construct' для object_pool, "ElementType должен иметь конструктор, соответствующий ???; количество заданных параметров не должно превышать то, что поддерживается через pool_construct"

Я видел страницу boost для pool_construct , но я не слишком уверен, в каком направлении мне нужно идти. У меня есть сборка надстройки на моей машине: pool_construct.m4, pool_construct.sh, pool_construct.bat, pool_construct.inc. Вопрос в том, что мне делать с этими примерами файлов в моем собственном проекте? Могу ли я создать свой собственный вариант pool_construct.inc и включить его в свой собственный проект? Как бы я добавил файл?

Любые советы / рекомендации будут высоко оценены. Обратите внимание, что я установил gnu's m4.

zerodefect.

1 Ответ

3 голосов
/ 10 апреля 2010

Если я посмотрю на /usr/include/boost/pool/detail/pool_construct.inc на моем компьютере Debian (извините, в настоящее время у меня нет доступа к MSVC), я вижу, что он поддерживает только до 3 аргументов конструктора.

Работа с m4 в соответствии с документацией для поддержки более чем поддерживаемых 3 звучит как боль по сравнению с простым созданием нового конструктора, который объединяет достаточное количество аргументов в одну структуру или boost::tuple, чтобы привести общая сумма передается до поддерживаемого числа.

...