方法はありますか?2つの同様の関数セット(C/C++)を効果的に切り替えることはできますか?C++で2つの関数セットを切り替える方法は?
void a_someCoolFunction();
void a_anotherCoolFunction(int withParameters);
…
void b_someCoolFunction();
void b_anotherCoolFunction(int withParameters);
…
そして、私が使用されている1実行時に私のプログラムでは、「スイッチ」することにしたい: は私が何を意味するか良く説明するために、私のようなグローバル関数の2セットを持って言うことができます。しかし:私は1つを持っているしたいいけない場合などの条件ですべての機能、:
void inline someCoolFunction(){
if(someState = A_STATE){
a_someCoolFunction();
}else{
b_someCoolFunction();
}
}
私はすべての機能が私のメインループで多く呼び出されることを期待し、そのため - 私は何かをすることができればそれが望ましいだろうこのような(私のメインループの開始時またはsomeStateが変更されたとき):その後、
if(someState = A_STATE){
useFunctionsOfType = a;
}else{
useFunctionsOfType = b;
}
と単に
useFunctionsOfType _someCoolFunction();
が、私はその理解できるのを願って呼び出します私の背景:私はOpenGL ES 1.1とOpenGL ES 2.0を両方とも正しく処理できるはずのアプリケーションを書いていますが、すべてのレンダリングメソッドを2回書く必要はありません(例:renderOpenGL1()
とrenderOpenGL2()
)のみrender()
)。私はすでに類似したメソッドを持っています:glLoadIdentity(); myLoadIdentity();
...しかし、これらの2つを何とか切り替える方法が必要です。 効果的な方法でこれを達成する方法はありますか? (これらに限定されない)を含む
関数ポインタのようなサウンドは、このトリックを行う必要があります。 – gablin
注:このようにCとC++を混同しないでください。潜在的な解決方法は、使用している言語によって大きく異なります。それを選んでください! –
すべての関数が 'alot'と呼ばれている場合は、' alot() '内のディスパッチャを変更するだけです。ところで、この「たくさん」はかなり毛深い獣でなければなりません! http://hyperboleandahalf.blogspot.com/2010/04/alot-is-better-than-you-at-everything.html – Potatoswatter