Hashing .net

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hashing .net

    Hallo,

    ich habe eine Classe CDefinition und will einen Container(hash_set) mit den Pointer aof Definitions aufbauen.

    In Class CDefinitionContainer header:

    private:
    stdext::hash_set<CDefinition*,definitionhasher> m_theDefinitions;




    und in der .cpp versuche ich den Iterator aufzuruffen(darauf bezieht sich auch die Fehlermeldung):

    typedef hash_set<CDefinition*,definitionhasher>::iterator iter_def;


    In Class CDefinition

    bool operator<( CDefinition const& a){
    return this->m_strSymbolName < a.m_strSymbolName ;
    }



    und die definitionhasher schaut so aus:

    class definitionhasher : public stdext::hash_compare<CDefinition*>
    {
    public:

    size_t operator() (const CDefinition* &s) const{
    size_t h = 0;
    std::string::const_iterator p, p_end;
    for(p = s->m_strSymbolName.begin(), p_end = s->m_strSymbolName.end(); p != p_end; ++p)
    {
    h = 31 * h + (*p);
    }
    return h;
    }

    bool operator() (const CDefinition* &s1, const CDefinition* &s2) const
    {
    return s1->m_strSymbolName < s2->m_strSymbolName;
    }

    };


    Die HashFunktion wird über die Variable DefinitionName aufgebaut, der einen String is. Es scheint jedoch dass ich problemmen mit dem < Operator habe.


    die 1-te VS.Net Fehlermeldung schaut so aus:

    c:\Documents and Settings\Gerhard\My Documents\Visual Studio Projects\diplom\hashing\CDefinitionContainer.cpp(67): error C2676: binary '<' : 'iter_def' does not define this operator or a conversion to a type acceptable to the predefined operator