Столкновение имени с методом класса

Итак, у меня есть класс, который определен ниже:

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(mHandle)" внутри моего закрытия - это то, что определено в AFAIK, и оно не находится ни в каком пространстве имен.

Чтобы обойти это, я переименовал моего близкого человека во что-то другое, но должен быть какой-то другой путь...

1 ответ

Решение

Поиск имени заканчивается, как только найдена хотя бы одна функция. Вы можете определить название, чтобы оно начинало искать в правильном месте:

::close( mHandle );

Или объявите имя локально, чтобы поиск обошел членов класса:

using ::close;
close( mHandle );
Другие вопросы по тегам