1

我正在用 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必须写在代码的顶部,而那种“混淆”了很多代码......

而且,this如果我分配 FUNCTION 回调,则所有 Object 变量都无法访问...

4

2 回答 2

4

如果你的编译器支持 c++11,你可以像这样使用 lambda 表达式:

function_that_needs_obj([]()
                        {
                           // Custom code enters here....
                        });

什么是 C++11 中的 lambda 表达式?

于 2013-05-08T03:52:28.013 回答
0

你可以在 boost lambda 中找到你需要的东西!

于 2013-05-08T04:53:44.063 回答