我试图将winsock2封装在一个类中,并且我有一个名为bind
的成员函数,这显然会碰到winsock2.h的bind
函数。
class foo {
public:
void bind();
void some_function() {
bind(_sockfd, p->ai_addr, p->ai_addrlen); //error... compiler actually calls foo::bind() instead of the global bind function.
}
private:
...
}
有解决方案吗? (除了重命名foo::bind()
)。
答案 0 :(得分:1)
如果您需要的功能不是宏,那么您可以完全限定它。
class base {
int bind(...);
}
class derived : public base {
int bind(...);
int someFunction();
}
int derived::someFunction()
{
base::bind(); // call base class's implementation.
bind(); // call derived::bind();
::bind(); // call global function.
}