Hello, I am new in this forum and hope to get some answers here.
Some words about me: I am a programmer since 88, working with C++ Builder XE7, living in Germany/Berlin.
My first question is about the algorithm "find_if" in combination with classes.
The compilere says : "const TDummy&" can not initialised with "par<const TDummyKey, TDummy>"
What does this mean?
This is my class:
This is the needed function for find_ifCode:class TDummyKey { public: int iID; public: TDummyKey(int paID) { iID = paID; } TDummyKey const& operator = (TDummyKey const&); bool operator == (TDummyKey const&) const; bool operator != (TDummyKey const&) const; bool operator < (TDummyKey const&) const; bool operator <= (TDummyKey const&) const; bool operator > (TDummyKey const&) const; bool operator >= (TDummyKey const&) const; int Compare(TDummyKey const&) const; }; inline bool TDummyKey::operator == (TDummyKey const& RefVar) const { return Compare(RefVar) == 0; } inline bool TDummyKey::operator != (TDummyKey const& RefVar) const { return Compare(RefVar) != 0; } inline bool TDummyKey::operator < (TDummyKey const& RefVar) const { return Compare(RefVar) < 0; } inline bool TDummyKey::operator <= (TDummyKey const& RefVar) const { return Compare(RefVar) <= 0; } inline bool TDummyKey::operator > (TDummyKey const& RefVar) const { return Compare(RefVar) > 0; } inline bool TDummyKey::operator >= (TDummyKey const& RefVar) const { return Compare(RefVar) >= 0; } int TDummyKey::Compare(TDummyKey const& RefVar) const { if (iID < RefVar.iID) return -1; if (iID > RefVar.iID) return 1; return 0; } class TDummy : public TDummyKey{ public: string strVarName; public: TDummy(int paID, string paVarName) : TDummyKey(paID) { strVarName = paVarName; } TDummy const& operator = (TDummy const&); bool operator == (TDummy const&) const; bool operator != (TDummy const&) const; bool operator < (TDummy const&) const; bool operator <= (TDummy const&) const; bool operator > (TDummy const&) const; bool operator >= (TDummy const&) const; int Compare(TDummy const&) const; }; inline bool TDummy::operator == (TDummy const& RefVar) const { return Compare(RefVar) == 0; } inline bool TDummy::operator != (TDummy const& RefVar) const { return Compare(RefVar) != 0; } inline bool TDummy::operator < (TDummy const& RefVar) const { return Compare(RefVar) < 0; } inline bool TDummy::operator <= (TDummy const& RefVar) const { return Compare(RefVar) <= 0; } inline bool TDummy::operator > (TDummy const& RefVar) const { return Compare(RefVar) > 0; } inline bool TDummy::operator >= (TDummy const& RefVar) const { return Compare(RefVar) >= 0; } int TDummy::Compare(TDummy const& RefVar) const { if (strVarName < RefVar.strVarName) return -1; if (strVarName > RefVar.strVarName) return 1; return 0; } typedef map<TDummyKey,TDummy> MapDummy; typedef MapDummy::iterator ItMapDummy;
Code:namespace stuff { int iID=0; bool IsID (const TDummy& value) { return (value.iID == iID); } }
This is my main-code:
Code:MapDummy mapDummy; TDummy Dummy1(1, string("A")); TDummy Dummy2(2, string("B")); TDummy Dummy3(3, string("C")); mapDummy.insert (pair<TDummyKey, TDummy> (Dummy1, Dummy1)); mapDummy.insert (pair<TDummyKey, TDummy> (Dummy2, Dummy2)); mapDummy.insert (pair<TDummyKey, TDummy> (Dummy3, Dummy3)); for (ItMapDummy it = mapDummy.begin(); it != mapDummy.end(); ++it) { wostringstream os; os << it->first.iID << " : " << it->second.strVarName.c_str(); cout << os.str().c_str(); } stuff::iID = 2; find_if(mapDummy.begin(), mapDummy.end(), stuff::IsID); for (ItMapDummy it = mapDummy.begin(); it != mapDummy.end(); ++it) { wostringstream os; os << it->first.iID << " : " << it->second.strVarName.c_str(); cout << os.str().c_str(); }
sincerly,
Necip




Reply With Quote
