在 main 中调用类的函数

Calling a function of a class in the main

本文关键字:函数 调用 main      更新时间:2023-10-16

我知道我们可以通过对象的 主要调用类的函数,例如

 object.Function1(object);

但是有没有办法像下面这样调用函数

  Function1(object);

我必须编写一个类,该类将使用 main 函数运行代码,如下所示

  int main() {
  Line line1(10);
  Line line2 = line1; 
  display(line1);
  display(line2);
  return 0;
   }
我不知道

你为什么需要它,但你可以创建调用方法显示的自由函数"display":

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;
}

在线演示

不便的是,这种轻松是有代价的:与Sandro的方法不同,您不能为不同的类使用相同函数名称的不同重载。