Столкновение имени с методом класса
Итак, у меня есть класс, который определен ниже:
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 );