我正在用C ++编写一些东西,而且如果语言中存在类似的东西,我们总会有一些“想法”......
我现在,对作为参数传递的对象存有疑问。
我一直在做的是创建一个新对象,并将它的实例作为指针传递,如下所示:
mObject* obj1 = new mObject();
obj1->callback(the_callback_function);
function_that_needs_obj(obj1); // (or the reference, if I didn't instantiated a pointer).
没关系,工作正常,这没问题。但是,当我使用Java时,我曾经这样做过:
function_that_needs_obj(new mObject(){
public void onCallback(){
// Custom code enters here....
}
});
在这样的C ++中是否有任何“类型”的使用?因为对于我需要创建的每个回调:一个Extended class
,或者一个functionNamedVeryLongBecauseThereAreMany
必须写在代码的顶部,并且那种“混淆”了很多代码...
而且,如果我在进行FUNCTION回调,那么所有的Object变量都无法通过this
访问...
答案 0 :(得分:4)
如果你的编译器支持c ++ 11,你可以像这样使用lambda表达式:
function_that_needs_obj([]()
{
// Custom code enters here....
});
答案 1 :(得分:0)
你可以在boost lambda中找到你需要的东西!