如何在C++中切换2个函数集?

Con*_*tin 5 c c++ performance function

有没有办法,我可以有效地在两个相似的功能集(C/C++)之间切换?为了更好地解释我的意思,让我说我有两组全局函数,如:

void a_someCoolFunction();
void a_anotherCoolFunction(int withParameters);
…

void b_someCoolFunction();
void b_anotherCoolFunction(int withParameters);
…
Run Code Online (Sandbox Code Playgroud)

我希望能够在运行时"切换"我的程序中使用哪一个.但是:我不想在每个功能上都有一个条件,例如:

void inline someCoolFunction(){
    if(someState = A_STATE){
        a_someCoolFunction();
    }else{
        b_someCoolFunction();
    }
}
Run Code Online (Sandbox Code Playgroud)

因为,我希望在我的主循环中调用每个函数 - 所以如果我可以做这样的事情(在我的mainloop的开头或someState被更改时)会更好:

if(someState = A_STATE){
    useFunctionsOfType = a;
}else{
    useFunctionsOfType = b;
}
Run Code Online (Sandbox Code Playgroud)

然后简单地打电话

useFunctionsOfType _someCoolFunction();
Run Code Online (Sandbox Code Playgroud)

我希望它可以理解我的意思......我的背景:我写一个应用程序,这应该能够处理的OpenGL ES 1.1和OpenGL ES 2.0都正常-但我不想写的每一个渲染方法2倍(如:renderOpenGL1()renderOpenGL2()我宁愿只写render()).我已经有类似的方法:glLoadIdentity(); myLoadIdentity();......但需要一种方法在这两种方式之间切换.有没有办法以高效的方式实现这一目标?

Oli*_*rth 8

几个选项,包括(但不限于):

  • 使用函数指针.
  • 将它们包装在类中,并使用多态.
  • 有两个单独的循环副本.

但是,对代码进行任何大的更改之前,请进行配置以确保这确实是一个问题.