类方法和全局函数中的别名

时间:2017-06-10 09:29:51

标签: c++

我试图将winsock2封装在一个类中,并且我有一个名为bind的成员函数,这显然会碰到winsock2.h的bind函数。

class foo {
public:
  void bind();
  void some_function() {
    bind(_sockfd, p->ai_addr, p->ai_addrlen); //error... compiler actually calls foo::bind() instead of the global bind function.
  }

private:
  ...
}

有解决方案吗? (除了重命名foo::bind())。

1 个答案:

答案 0 :(得分:1)

如果您需要的功能不是宏,那么您可以完全限定它。

class base {
      int bind(...);
}

class derived : public base {
       int bind(...);
       int someFunction();
}


int derived::someFunction()
{
      base::bind(); // call base class's implementation.
      bind();  // call derived::bind();
      ::bind();  // call global function.
}