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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top