c++ - 多个#include,不同的功能,相同的名称:如何区分它们?
问题描述
这里似乎有点问题,这可能是一个非常愚蠢的问题:
#incude <thread>
和
#include <winsock2.h>
两者都包含一个名为 bind() 的函数。我想调用这个 winsock2 绑定:
bind(listenerSocket._internalCustomSocket, (sockaddr*)&listenerSocket._peer, listenerSocket._peerLength)
listenerSocket 是我的自定义套接字类,如下所示:
class CustomSocket
{
public:
CustomSocket(int port);
~CustomSocket();
SOCKET OpenSocket(Listener* host);
int _port;
SOCKET _internalCustomSocket;
sockaddr_in _peer;
int _peerLength;
};
但是,它默认使用看起来像的 bind()
_NODISCARD inline _Binder<_Unforced, _Fx, _Types...> bind(_Fx&& _Func, _Types&&... _Args)
我如何指定我要调用哪一个?
到目前为止我发现的唯一解决方案是不包括包含
解决方案
首先,using namespace std;
从您的代码中消除任何使用。那只会把事情搞砸。
然后,要访问 Winsock 的绑定,您可以编写:
::bind (...);
要访问bind
STL 中的版本,您可以编写:
std::bind (...);
现在您知道名称空间的用途了。
推荐阅读
- sql - 针对 mongodb 运行数千个 updateMany 语句会出现错误“Bufbuilder 试图将()增长到 x 字节,超过 64MB 限制”
- python-3.x - 如何检索桌面快捷方式指向的 url?
- angular - 在 Angular Universal 中检测网站页面中的网络爬虫
- python - 如何用(x,y)对拆分列表
- react-native - 使用反应导航为底部选项卡创建粘性组件
- jags - 使用 JAGS 的零改变(障碍)泊松或负二项式模型(零通货膨胀)中的自相关误差
- android - 无服务器卡支付处理器集成选项
- c# - 如何在控制器中传递模型的值?
- php - 解析包含产品 ID 和 option_id => variant_id 对的字符串
- java - Selenium 测试 Java maven 依赖项