【发布时间】:2012-06-29 10:36:55
【问题描述】:
我有一个 C++ 类,它是一个大而复杂的方法compute,我想用“计算内核”提供它,这是同一个类的方法。我想我会做一些类似的事情
class test {
int classVar_ = 42;
int compute_add(int a, int b)
{
compute(int a, int b, this->add_())
}
int compute_mult(int a, int b)
{
compute(int a, int b, this->mult_())
}
int compute_(int a, int b, "pass in add or multiply as f()")
{
int c=0;
// Some complex loops {
c += f(a,b)
// }
return c;
}
int add_(int a, int b){a+b+classVar_;}
int multiply_(int a, int b){a*b+classVar_;}
...
}
但我不确定如何传入add 或multiply。
这种方法的替代方法是传入某种ENUM 来指定add() 或multiply(),但我想避免在循环中使用switch 或if。
这里的最佳做法是什么?
【问题讨论】:
-
您有一个
member-function-pointers标签。这不是一个好的开始吗? -
@chris 我猜他对语法感到困惑?
-
如果您要传递的方法与您的示例中一样,普通(静态)函数和普通函数指针就足够了。
-
@RedX,Google 并不是真正的问题,因为它是源代码的一个非常常见的主题。
标签: c++ member-function-pointers