000
03.01.2006, 01:56 Uhr
darkstar2005
|
Hallo,
ich habe eine Classe CDefinition und will einen Container(hash_set) mit den Pointer aof Definitions aufbauen.
In Class CDefinitionContainer header:
Code: |
private: stdext::hash_set<CDefinition*,definitionhasher> m_theDefinitions;
|
und in der .cpp versuche ich den Iterator aufzuruffen(darauf bezieht sich auch die Fehlermeldung):
Code: |
typedef hash_set<CDefinition*,definitionhasher>::iterator iter_def;
|
In Class CDefinition
Code: |
bool operator<( CDefinition const& a){ return this->m_strSymbolName < a.m_strSymbolName ; }
|
und die definitionhasher schaut so aus:
Code: |
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:
Code: |
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
|
|