amplificare metodo costrutto object_pool
-
25-09-2019 - |
Domanda
Sono appassionato di utilizzando la classe object_pool di spinta per la memoria riutilizzo per una serie di fotogrammi video.
boost::object_pool< VideoFrame > FramePool;
Ora, la classe VideoFrame ha due costruttori. La prima versione del costruttore prende 4 argomenti mentre la seconda versione impiega 6 argomenti / parametri.
Per ogni "nuovo" frame video che viene allocata, desidero chiamare il costruttore sull'oggetto sia utilizzando la versione 4 o 6 parametro. Ad esempio:
//VideoFrame *F = new VideoFrame(IdeckLinkOutput, &R, PixelFormat, FrameFlags);
VideoFrame *F = FramePool.construct(IdeckLinkOutput, &R, PixelFormat, FrameFlags);
Edificio questo su MSVS 2005 ricevo l'errore:
error C2660: 'boost::object_pool<T>::construct' : function does not take 4 arguments
Secondo la documentazione sul metodo 'costrutto' di object_pool, "ElementType deve avere un corrispondente costruttore ???; il numero di parametri dati non deve superare quanto sostenuto attraverso pool_construct"
ho visto la pagina di spinta per il pool_construct , ma io non sono troppo sicuro la direzione devo prendere. La build di spinta che ho sulla mia macchina ha sia un pool_construct.m4, pool_construct.sh, pool_construct.bat, pool_construct.inc. E 'una questione di che cosa devo fare con questi file di esempio all'interno del mio progetto? Dovrei creare la mia variante di pool_construct.inc e comprendono che nel mio progetto? Come faccio a aggiungere il file?
Eventuali suggerimenti / raccomandazioni sarebbe molto apprezzato. Si prega di notare che ho installato GNU m4.
zerodefect.
Soluzione
Se guardo /usr/include/boost/pool/detail/pool_construct.inc
sulla mia macchina Debian (mi dispiace non hanno accesso a MSVC attualmente), lo vedo supporta solo fino a 3 argomenti del costruttore.
Messing con m4 come da documentazione per sostenere più della supportate 3 suoni come un dolore rispetto al semplice creazione di un nuovo costruttore che raggruppa abbastanza degli argomenti in una sola struttura o boost::tuple
per portare il totale tramandata al numero supportato.