C ++ NEW Object作为参数(与Java一样)

时间:2013-05-08 03:19:05

标签: java c++ class object coding-style

我正在用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访问...

2 个答案:

答案 0 :(得分:4)

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

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

What is a lambda expression in C++11?

答案 1 :(得分:0)

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