разрешить ошибку компиляции из-за использования неполного типа в хеш-функции - PullRequest
0 голосов
/ 28 октября 2019

следующий код не удалось скомпилировать из-за использования неполного типа Dir при компиляции хеш-функции для unordered_set. Есть ли способ обойти это. Я предполагаю, что добавление другого класса может решить эту проблему. Но какова оптимальная практика для решения такого дела?

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

1 Ответ

0 голосов
/ 28 октября 2019

Это решает проблему, уникальность, добавление / удаление Dir - все, как кажется, решено. но нам нужно тщательно отслеживать список и unordered_map, чтобы убедиться, что он работает правильно. не уверен, что это лучший путь.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...