C'è un modo, posso passare tra 2 set di funzioni simili (C/C++) in modo efficace? Per spiegare meglio quello che voglio dire, Diciamo che ho 2 set di funzioni globali come:Come passare tra 2 set di funzioni in C++?
void a_someCoolFunction();
void a_anotherCoolFunction(int withParameters);
…
void b_someCoolFunction();
void b_anotherCoolFunction(int withParameters);
…
E voglio in grado di "switch" nel mio programma in fase di esecuzione quale viene utilizzato. MA: Non voglio avere uno se la condizione alla ogni funzione, come:
void inline someCoolFunction(){
if(someState = A_STATE){
a_someCoolFunction();
}else{
b_someCoolFunction();
}
}
Perché, mi aspetto che ogni funzione viene chiamata molto nella mia mainloop - per cui sarebbe preferibile se avrei potuto fare qualcosa come questo (a inizio del mio ciclo principale o quando si cambia someState):
if(someState = A_STATE){
useFunctionsOfType = a;
}else{
useFunctionsOfType = b;
}
e poi semplicemente chiamare
useFunctionsOfType _someCoolFunction();
spero sua comprensibile Cosa intendo ... Il mio background: Sto scrivendo un'App, che dovrebbe essere in grado di gestire OpenGL ES 1.1 e OpenGL ES 2.0 entrambi correttamente, ma non voglio scrivere ogni metodo di rendering 2 volte (come: renderOpenGL1()
e renderOpenGL2()
Preferisco scrivere solo render()
). Ho già metodi simili come: glLoadIdentity(); myLoadIdentity();
... Ma ho bisogno di un modo per passare in qualche modo tra questi due. Esiste un modo per farlo in modo efficace?
Suoni come puntatori di funzione dovrebbero fare il trucco. – gablin
Nota: non confondere C e C++ in questo modo. Le potenziali soluzioni sono molto diverse a seconda della lingua con cui stai lavorando. Per favore sceglierne uno! –
Se ogni funzione è denominata 'alot', basta modificare il dispatcher all'interno di' alot() '. A proposito, questo "molto" deve essere una bestia pelosa! http://hyperboleandahalf.blogspot.com/2010/04/alot-is-better-than-you-at-everything.html – Potatoswatter