Hi Stephen, Stephen J. Gowdy wrote: >You'd make this one; > >const TString& operator[]( const char* key ) const; > >and then create a new one; > >TString& operator[]( const char* key ); > > td["jane"] = "anderson"; How do I get the value on the right side of the equals sign? ie "anderson". "jane" comes across on key? Wouldn't it need to be something like: void operator[]( const char* key , const char* value) { Add(key, value); } void Add(const char* key, const char* value) { TObjString *tosKey = new TObjString(key); TObjString *tosValue = new TObjString(value); if( !this->TMap::GetValue(tosKey) ) { this->TMap::Add(tosKey, tosValue); } else { TObjString *oldVal = this->TMap::Remove(tosKey); delete oldVal; this->TMap::Add(tosKey, tosValue); } } or some such thing? Thanks Stephen :-) Ashley Cambrell >On Fri, 26 Apr 2002, Ashley Cambrell wrote: > > > >>Hi Rooters, >> >>Just a simple question. I'm still learning so I'm sorry if this is one >>of those "What's an int?" questions. I have a class the inherits from >>TMap and I want to emulate associative arrays. >> >>I have this: >> >> TString operator[](const char* key) >> { >> TObjString *tosKey = new TObjString(key); >> TString value; >> >> if( this->TMap::GetValue(tosKey) ) >> value = ((TObjString >>*)(this->TMap::GetValue(tosKey)))->String(); >> >> delete tosKey; >> >> return value; >> } >>root [1] THTTPData td; >>root [2] td.Add(new TObjString("bob"), new TObjString("smith")); >>root [3] cout << td["bob"] << endl; >>smith >>root [4] >> >>which works fine, but I'd like to also be able to do >> >>td["jane"] = "anderson"; >> >>Is it possible? (add another operator overload? but then how does C++ >>tell the difference between the two) >> >>Thanks for your patience :-) >> >>Ashley Cambrell >> >> >> >> > > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:51 MET