2010-04-08 33 views
2

我很喜歡使用boost的object_pool類來爲一組視頻幀重用內存。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); 

2005年MSVS建設這個,我收到錯誤:

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

據對object_pool的「構造」方法的文檔「的ElementType必須有一個構造函數匹配? ?;給定的參數數量不能超過通過pool_construct支持的參數「

我已經見過pool_construct的boost頁面,但我不太確定我需要採取的方向。我在我的機器上構建的boost具有pool_construct.m4,pool_construct.sh,pool_construct.bat和pool_construct.inc。這是我在自己的項目中對這些示例文件做什麼的問題?我是否會創建自己的pool_construct.inc變體並將其包含在我自己的項目中?我將如何添加文件?

任何提示/建議將不勝感激。請注意我已經安裝了gnu的m4。

zerodefect。

回答

2

如果我在我的Debian機器上看/usr/include/boost/pool/detail/pool_construct.inc(對不起,目前沒有訪問MSVC),我看到它只支持最多3個構造函數參數。

根據documentation與m4混淆,以支持比支持3種聽起來更痛苦的事情,比較簡單地創建一個新的構造器,該構造器在單個結構中捆綁了足夠多的參數,或者將總數傳遞給數量支持的。

+0

很酷...謝謝你。 – ZeroDefect 2010-06-03 09:57:20