【发布时间】:2013-03-20 20:24:06
【问题描述】:
我想要做的伪代码是:
function<bool(int)> getFunc(type) // get a function depending on what type is passed
问题是返回的函数必须声明为静态的吗?结果,我无法访问对象属性。所以我需要将它们传递给函数?因此,要返回的原始函数可能如下所示:
bool func1(int)
bool func2(int)
现在需要注入它需要运行的其他对象/参数...
bool func1(int, Class1)
bool func2(int, Class2)
那么如何定义getFunc的返回类型呢?或者也许有更好的方法?
更新
在上面,func* 函数实际上是:has*()。例如。
hasStmtsUsing(variable)
hasVariablesUsed(stmt)
为了确定条件是否为真,它使用了一个对象,例如。 uses。然后还有其他类似的has*() 函数,例如使用对象modifies 的hasStmtsModifying(variable)。 uses和modifies是不同类型的对象,本来是对象成员,不需要传入。现在因为函数是static,所以需要传入。
在写这篇文章时,我在想我需要的是某种依赖注入器?也许我传入DI 并调用DI.getX() 函数?
【问题讨论】:
-
传递可变参数函数听起来像是自找麻烦。你能解释一下你为什么这样做吗? (也可能不可能,因为据我所知,可变参数函数由编译器以特殊方式处理)
-
@Dave,顺便说一句,我更新了我的帖子
标签: c++ functional-programming function-pointers