【发布时间】:2013-07-29 15:41:34
【问题描述】:
如何从自身内部调用函数对象?看来我不能使用this。示例:
class factorial {
public:
int operator()(int n) {
if (n == 0)
return 1;
return n * ??(n-1);
}
};
我在?? 放什么?
【问题讨论】:
-
(*this)呢? -
另外,
this->operator()(n-1); -
@Borgleader:他遵循函子模式,它要求非
staticoperator()()。添加诸如static之类的修饰符并不总是有价值的,因为您可以,对于这个特定函子的这个特定版本。 -
根据评论添加了
public:。 -
简短评论:在具有 32 位整数的系统上,您不能使用此实现来计算 14!因为14!大于 32 位可表示的最大数。在具有 64 位整数的系统上,22!尽可能大。
标签: c++ function-object