Fons gave you the implementation. A reference to the string in the
dictionary is passed back and then that string is updated to contain the
new value.
On Sat, 27 Apr 2002, Ashley Cambrell wrote:
> 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
> >>
> >>
> >>
> >>
> >
> >
> >
>
>
>
--
/------------------------------------+-------------------------\
|Stephen J. Gowdy | SLAC, MailStop 34, |
|http://www.slac.stanford.edu/~gowdy/ | 2575 Sand Hill Road, |
|http://calendar.yahoo.com/gowdy | Menlo Park CA 94025, USA |
|EMail: gowdy@slac.stanford.edu | Tel: +1 650 926 3144 |
\------------------------------------+-------------------------/
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:51 MET