指定不明确的引用

Specifying for ambiguous reference

本文关键字:引用 不明确      更新时间:2023-10-16

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);

但是,还有另一个hashstd::hash,当我构建它时它会抛出error: reference to 'hash' is ambiguous

有没有办法指定源代码尝试使用哪个hash?我知道std::hash,但是在头文件中hash怎么样?

您可以使用

自定义hash函数所在的命名空间来消除歧义。 如果它不在显式命名空间中,则只需::hash() 即可在全局命名空间中找到它。

如果您自己的哈希实现没有特定的命名空间,则可以使用 ::hash 来引用它。