名称与类方法冲突

时间:2014-05-10 05:58:37

标签: c++ sockets posix name-clash

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

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

    int open();
    void close();

private:
    int mHandle;
    int mState;
};

然后我实现了close()方法:

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

"关闭(mHandle)"在我的关闭中是在AFAIK中定义的那个,它不在任何命名空间内。

为了解决这个问题,我将其重新命名为其他东西,但还有其他方法......

1 个答案:

答案 0 :(得分:4)

只要找到至少一个函数,名称查找就会结束。您可以对名称进行限定,以便它开始在正确的位置查找:

::close( mHandle );

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

using ::close;
close( mHandle );