由于在哈希函数中使用不完整类型而导致编译失败

问题描述 投票:0回答:1

以下代码由于编译unordered_set的哈希函数时使用不完整类型Dir而无法编译。有没有办法解决这个问题。我猜想添加另一个类可能会解决此问题。但是解决这种情况的最佳实践是什么。

auto pred = [](const auto& v) {
                return std::hash<std::string>()(v.name);
            };

struct Dir{
    bool operator==(Dir const& other) {
        return name == other.name;
    }

    std::string name;
    std::unordered_set<Dir, decltype(pred)> down;
};
c++ hash
1个回答
0
投票

这解决了问题,独特性,Dir的添加/删除似乎都得到了照顾。但是我们需要紧密跟踪列表和unordered_map以确保其正常工作。不知道这是否是最好的方法。

struct Dir{
    std::string name;
    std::list<Dir> down;
    std::unordered_map<std::string, std::list<Dir>::iterator> downMap;
};

© www.soinside.com 2019 - 2024. All rights reserved.