【问题标题】:Functions with same name, different origin同名不同出处的函数
【发布时间】:2014-11-29 15:46:50
【问题描述】:

我正在一个类中编写一个函数,该函数与源自头文件(特别是 socket.h)的另一个函数具有相同的名称。

void XClass::bind(){
     //...
     int rv = bind(listener, (struct sockaddr*) &addr, sizeof(sockaddr));

}

当然,bind(..) 调用的是类中的函数,而不是标题中的函数(隐含的代码是不可编译的)。

由于它不在命名空间声明中,是否可以调用 right 方法?如果是肯定的,怎么做?

我知道我可以以不同的方式重新声明它,但是如果我有大量代码包含名称与调用者本身一致的外部函数,那么随之而来的重命名听起来就像一场噩梦。

【问题讨论】:

  • 只需使用全部替换选项
  • @Taimours 我清楚地知道原始选项并且我不想重命名声明 - 剖析特定情况,当你正在将程序编写为外部依赖项
  • 好的,所以你正在尝试找到一种方法来做到这一点而不用全部替换。

标签: c++ function header namespaces


【解决方案1】:

您可以在相关名称前加上 :: 以表示您正在全局命名空间中查找它:

int rv = ::bind(listener, (struct sockaddr*) &addr, sizeof(sockaddr));

【讨论】:

  • 我期待类似的东西——比如“全局”操作(参考 c# 的 global:: );虽然看起来足够直观
猜你喜欢
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多