TMap FindObject by keyname

From: Dirk Meier (Dirk.Meier@cern.ch)
Date: Wed Apr 28 1999 - 18:42:35 MEST


Hi,

here I tried to use TMap to store pairs of keys and values.
The FindObject(Text_t *) does not work in the example below. 
Do I use it wrong ?

Later, I am planning to use TObjNum as the value in
the TMap (that is a number inheriting from TObject, see
http://root.cern.ch/root/html/examples/tcollex.C.html).
Is there a reason why TObjNum is not part of root's classes?
Is there a better why to realize maps between numbers
and strings (keywords) than using TMap ?


thanks for your help

Dirk




Example (also as attachment):

{
  
#include <iostream>
  
  TObjString *s1 = new TObjString("Alpha");
  TObjString *s2 = new TObjString("Beta");

  TMap *aMap = new TMap();

  aMap->Add((TObject*)s1, (TObject*)s2);
  
  cout << aMap->GetValue(s1)->GetName() << endl;

  cout << "o.k., this was correct ... now try retrival using the keyname : " << endl;

  cout << aMap->FindObject("Alpha")->GetName() << endl;

  cout << "the FindObject method returns null pointer ???? Why ??" << endl;

}


here the output:

  *******************************************
  *                                         *
  *        W E L C O M E  to  R O O T       *
  *                                         *
  *   Version   2.21/01   14 January 1999   *
  *                                         *
  *  You are welcome to visit our Web site  *
  *          http://root.cern.ch            *
  *                                         *
  *******************************************

FreeType Engine v1.1 used to render TrueType fonts.

CINT/ROOT C/C++ Interpreter version 5.13.83, Dec 2 1998
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] .x aTMapTester.C
Beta
o.k., this was correct ... now try retrival using the keyname : 
Error: illegal pointer to class object FindObject("Alpha") 0x0 3
FILE:/home/dime/cc/prj/RawRead/./aTMapTester.C LINE:19
*** Interpreter error recovered ***
root [1]






// aTMapTester.C

{
  
#include <iostream>
  
  TObjString *s1 = new TObjString("Alpha");
  TObjString *s2 = new TObjString("Beta");

  TMap *aMap = new TMap();

  aMap->Add((TObject*)s1, (TObject*)s2);
  
  cout << aMap->GetValue(s1)->GetName() << endl;

  cout << "o.k., this was correct ... now try retrival using the keyname : " << endl;

  cout << aMap->FindObject("Alpha")->GetName() << endl;

  cout << "the FindObject method returns null pointer ???? Why ??" << endl;

}



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:32 MET