调用类的功能,在主
问题描述:
我知道我们可以通过物体如调用类的功能,在主
object.Function1(object);
但调用类的功能主要有调用诸如以下功能的任何方式
Function1(object);
我不得不写这将有一个主要功能如下
int main() {
Line line1(10);
Line line2 = line1;
display(line1);
display(line2);
return 0;
}
答
我不知道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;
}
不便之处在于这种轻松是有代价的:与桑德罗的做法,安:我对于不同的类,不会有相同函数名称的重载。
'std :: mem_fn'是答案,或者是lambda –
使该方法成为“静态”方法。 –
@Thomas Matthews如果我使静态方法,我必须使用类名来调用方法 –