调用类的功能,在主

问题描述:

我知道我们可以通过物体如调用类的功能,在主

object.Function1(object); 

但调用类的功能主要有调用诸如以下功能的任何方式

Function1(object); 

我不得不写这将有一个主要功能如下

int main() { 
    Line line1(10); 
    Line line2 = line1; 
    display(line1); 
    display(line2); 
    return 0; 
    } 
+0

'std :: mem_fn'是答案,或者是lambda –

+0

使该方法成为“静态”方法。 –

+0

@Thomas Matthews如果我使静态方法,我必须使用类名来调用方法 –

我不知道W¯¯运行代码的类HY你需要它,但你可以创建免费功能“显示”调用方法显示:

void display(Line& line) 
{ 
    line.display(); 
} 
int main() { 
    Line line1(10); 
    Line line2 = line1; 
    display(line1); 
    display(line2); 
    return 0; 
} 

在补充桑德罗的简单而有效的建议,这里更通用的一个,有人在评论中提到。

您可以使用mem_fn()(或如果在C++ 11之前使用较旧的C++编译器,则为mem_fun_ref())创建与该成员函数对应的函数对象。

的好处是,你不必担心返回类型和参数:

class C { 
    public: 
    void x() { cout << "Yes x!"<<endl; } 
    void y(int a) { cout << "Yes y"<<a<<"!"<<endl; } 
}; 

int main() { 
    C c; 
    c.x(); 
    c.y(3); 

    auto x = mem_fn(&C::x); // function object 
    auto y = mem_fn(&C::y); 
    x(c);      // call them like a function 
    y(c,4); 

    return 0; 
} 

Online demo

不便之处在于这种轻松是有代价的:与桑德罗的做法,安:我对于不同的类,不会有相同函数名称的重载。