名称与类方法冲突

帕杜梅洛蒂

所以我有一个定义如下的类:

class Socket {
public:
    Socket();
    virtual ~Socket();

    int open();
    void close();

private:
    int mHandle;
    int mState;
};

然后我像这样实现close()方法:

void Socket::close()
{
    if (mHandle!=0)
        close(mHandle);
}

我的close内的“ close(mHandle)”是在AFAIK中定义的一个,它不在任何名称空间内。

要解决此问题,我将自己重命名为其他名称,但是必须采用其他方法...

土豆泥

一旦找到至少一个功能,名称查找就会结束。您可以限定名称,以便在正确的位置开始查找:

::close( mHandle );

或在本地声明名称,以便查找绕过类成员:

using ::close;
close( mHandle );

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章