所以,在C ++中,我有一个类投票,它有一个发送功能,可以通过网络发送投票。类Vote中的此发送函数使用sys / socket.h中的send函数。当我编译时,我得到的错误基本上说它使用的是Vote :: send而不是sys / socket.h ::在Vote :: send中发送。如何解决此名称冲突?
答案 0 :(得分:2)
使用scope resolution operator(::
)从全局范围引用send()
函数,例如:
void Vote::send() {
::send(...); // Calls global send().
}
答案 1 :(得分:2)
你可以做不同的事情。您可以限定电话:
void Vote::send() {
::send(...);
}
或者您可以通过使用声明将命名空间级别功能纳入范围:
void Vote::send() {
using ::send;
send(...);
}
或者,如果它是一个命名空间函数并且它与Vote
类位于同一个命名空间中,你也可以提供一个本地声明,尽管我会避免使用本地函数声明,因为它更容易获得签名错误:
void Vote::send() {
int send(int, const void*, size_t, int);
send(...);
}