在主

时间:2017-10-14 17:49:33

标签: c++ c++11 visual-c++

我知道我们可以通过一个对象来调用一个类的函数,例如

 object.Function1(object);

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

  Function1(object);

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

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

2 个答案:

答案 0 :(得分:5)

我不知道为什么你需要它但你可以创建调用方法显示的自由功能“display”:

  select table1.*
    from table 1
    inner join view1
    on table1.a = view1.a 
    and table1.b = view1.b;

答案 1 :(得分:0)

作为Sandro简单而有效的提案的补充,这里有一个更通用的提案,有人在评论中提到。

您可以使用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

不便之处在于这种便利是有代价的:与Sandro的方法不同,对于不同的类,你不能对同一个函数名称进行不同的重载。