Как написать qHash для контейнера QSet ?

Мне нужно реализовать набор наборов в моем приложении. Использование QSet с пользовательским классом требует предоставления функции qHash () и оператора == .

Код выглядит следующим образом:

    class Custom{
        int x;
        int y;
        //some other irrelevant here
    }
    inline uint qHash(Custom* c){
        return (qHash(c->x) ^ qHash(c->y));
    }
    bool operator==(Custom &c1, Custom &c2){
        return ((c1.x==c2.x) && (c1.y == c2.y));
    }

    //now I can use: QSet<Custom*>

Как я могу реализовать qHash (QSet ) , чтобы иметь возможность использовать QSet > ?

Изменить:

Дополнительный вопрос: В моем приложении «набор наборов» может содержать до 15000 наборов. Каждое подмножество до 25 указателей пользовательских классов. Как гарантировать, что qHash (QSet ) будет достаточно уникальным?

9
задан vikin9 20 March 2015 в 14:21
поделиться