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

标签 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())。

最佳答案

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

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

关于c++ - 类方法和全局函数中的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44471738/

相关文章:

c++ - 为什么要调用复制构造函数来构造一个空的 unique_ptr vector ?

c++ - 用户定义的比较运算符(运算符>、运算符<等)

c++ - javacpp 中的 "a namespace name is not allowed"错误

c++ - 如何读取映射文件中的结构 vector ?

c++ - 如何将类更改为模板类

c++ - 构建一个长字符串作为参数传递给函数

c++ - C++ 中的 Blob 检测

c++ - 从多个进程和同一进程内注册相同的 ETW TraceLogging Provider GUID

c++ - 从 C++ 中的非常大的文本文件资源中读取

php - 如何在ubuntu中使用php脚本编译c程序