
Originariamente inviata da
MItaly
Onestamente non riesco a capire che problema stai cercando di risolvere...
si scusa MItaly rileggendo l'ho capito anch io , scusate .
io ho una mappa con coppie chiavi valori che contiene tutti i dati che mi servono e vorrei agganciare sapendo le chiavi(e le so) ad un command i parametri che configuro.
Se per es ho una mappa con [0][parametro1] [1][parametro2] [2][parametro3]
vorrei che il mio command si andasse a prendere i parametri da solo per cui è configurato e potesse essere eseguito, ho capito adesso che la soluzione migliore è passare la mappa e lasciare che il mio oggetto si prenda i parametri che gli servono dato che al suo interno ha gli indici.
Spiego dove lo uso:
Ho creato un oggetto mesh che ha vari gruppi di dati(sono vettori principalmente) : le posizioni, le normali, i colori ecc.. vorrei creare dei "trasformatori" per questi gruppi di dati e ho pensato ad una famiglia di oggetti command che prendono come input dati e li trasformano , ad ogni chiamata o solo all inizio.
ad es ci sara il RicalcolaNormaliCommand o l'EstrudiCommand ecc.... e questi command li passo come parametri template cosi che posso configurare i trasformatori che voglio.
chiaramente il RicalcolaNormaliCommand prendera in input dalla mappa le normali e le posizioni, l'EstrudiCommand prenderà le posizioni ec....
ecco ho pensavo a qualcosa del genere
codice:
template<Class Transformer>
class CMesh
{
map<int,BufferData>* m_pmappacondati = new map<int,BufferData>;
vector<TransformerBase>m_transformer;
void init(){
'creo il trasformer all'inizializzazione
Transformaer trans = new Transformer(m_pmappacondati);
m_transformer.push_back(trans)
}
void transform()
{
eseguo i m_transformer che sono nel vector
}
}
vediamo cosa non riesco a fare :
io vorrei passare i transformer come parametro template istanziarli e e aggiungerli al vector dei trasformatori, questo si puo fare in compile time o in design time?
codice:
void init(){
'creo il trasformer all'inizializzazione
Transformaer trans = new Transformer(m_pmappacondati);
m_transformer.push_back(trans)
}
come si fa?
grazie, spero di essermi spiegato meglio.
ciao.