¿Hay alguna manera, puedo cambiar entre 2 conjuntos de funciones similares (C/C++) de manera efectiva? para explicar mejor lo que quiero decir, digamos que tengo 2 juegos de funciones globales como:¿Cómo cambiar entre 2 conjuntos de funciones en C++?
void a_someCoolFunction();
void a_anotherCoolFunction(int withParameters);
…
void b_someCoolFunction();
void b_anotherCoolFunction(int withParameters);
…
Y quiero poder "interruptor" en mi programa en tiempo de ejecución cuales uno es usado. PERO: No quiero tener uno si la condición en cada función, como:
void inline someCoolFunction(){
if(someState = A_STATE){
a_someCoolFunction();
}else{
b_someCoolFunction();
}
}
Porque, espero que cada función se llama mucho en mi mainloop - por lo que sería preferible si podía hacer algo como esto (al inicio de mi mainloop o cuando se cambia someState):
if(someState = A_STATE){
useFunctionsOfType = a;
}else{
useFunctionsOfType = b;
}
y luego simplemente llaman
useFunctionsOfType _someCoolFunction();
espero que sea comprensible lo que quiero decir ... Mis antecedentes: estoy escribiendo una aplicación, que debería ser capaz de manejar OpenGL ES 1.1 y OpenGL ES 2.0 correctamente, pero no quiero escribir cada método de renderizado 2 veces (como: renderOpenGL1()
y renderOpenGL2()
prefiero escribir solo render()
). Ya tengo métodos similares como: glLoadIdentity(); myLoadIdentity();
... Pero necesito una forma de cambiar entre estos dos de alguna manera. ¿Hay alguna manera de lograr esto de una manera eficiente?
Parece que los punteros a las funciones deberían ser el truco. – gablin
Nota: no combine C y C++ de esta manera. Las posibles soluciones son muy diferentes según el idioma con el que estés trabajando. Por favor, elija uno! –
Si cada función se llama 'mucho', entonces solo tiene que modificar el despachador dentro de' mucho() '. Por cierto, ¡este "mucho" debe ser una bestia peluda! http://hyperboleandahalf.blogspot.com/2010/04/alot-is-better-than-you-at-everything.html – Potatoswatter