指定不明确的引用
Specifying for ambiguous reference
在mdart/mdart_function.h
中,定义了函数hash
。
inline nsaddr_t hash(nsaddr_t id) {
bitset<ADDR_SIZE> tempAddress_ (id);
bitset<ADDR_SIZE> address_;
for(unsigned int i=0; i<ADDR_SIZE; i++) {
if (tempAddress_.test(i)) {
address_.set(ADDR_SIZE - 1 - i);
}
}
address_.flip(ADDR_SIZE - 1);
nsaddr_t temp = (nsaddr_t) address_.to_ulong();
#ifdef DEBUG
fprintf(stdout, "thash = %sn", bitString(temp));
#endif
return temp;
}
在另一个源文件中,引用hash
函数的正确标头包括:
nsaddr_t dstAdd_ = hash(reqId);
但是,还有另一个hash
,std::hash
,当我构建它时它会抛出error: reference to 'hash' is ambiguous
。
有没有办法指定源代码尝试使用哪个hash
?我知道std::hash
,但是在头文件中hash
怎么样?
您可以使用
自定义hash
函数所在的命名空间来消除歧义。 如果它不在显式命名空间中,则只需::hash()
即可在全局命名空间中找到它。
如果您自己的哈希实现没有特定的命名空间,则可以使用 ::hash
来引用它。
相关文章:
- Visual C++(VS2017)中用户定义的转换不明确
- 对"列表"的引用不明确,包括头文件
- 为什么调用具有通用或 r 值引用的重载覆盖函数是不明确的?
- 是否有一种方法可以将C 类成员引用到向量而不明确添加它们
- 由于引用,重载的调用是不明确的
- 关于解引用运算符是否在表达式中产生对象对值的定义不明确
- 当使用g++4.5.2进行编译时,对类的引用是不明确的
- 使用memset函数时,对数组的引用是不明确的错误
- 指定不明确的引用
- 构造函数基本(对距离的引用不明确)
- 错误:在armadillo和oracle occi兼容性问题中,对"剑"的引用不明确
- 引用不明确
- Visual C++编译器为不明确的符号提供了错误的行引用
- 带有重载r值引用函数的调用不明确
- 对Cocos2d-x大小类型的引用不明确
- Cocos2dx导入QuartzCore框架时出现(对Point、Rect、Size的引用不明确)错误
- 通过不明确的转换运算符进行引用绑定
- 到引用的转换不明确
- 升压误差:对'detail'的引用不明确
- 不明确的引用和命名空间(来自两个外部库的定义冲突)