[ROOT] Confused with TIter, TListIter: class variable not found

From: cstrato@EUnet.at
Date: Fri Aug 17 2001 - 20:32:03 MEST


Dear Rooters

For my GUI I have the following main class:

class TMyFrame {
   RQ_OBJECT()

   private:
      TGMainFrame         *fMain;
      TGCompositeFrame    *fFrame;
      TGMenuBar           *fMenuBar;
      TGPopupMenu         *fMenuFile;
etc
   // Parameters
      TList     *fList;
      TString    fDir;
etc
   public:
      TMyFrame(const TGWindow *vWindow, UInt_t vWidth, UInt_t vHeight);
      virtual TMyFrame();
etc
      void FRun();
};


I have the following code fragment in the code FRun() for a menu item,
which I can write in several ways:

   cout << "Directory:  " << fDir << endl;  //ok
   TString vName;
   TObjString *vObj;   //or:   TObjString *vObj = new TObjString();
   TIter next(fList);  //or:   TListIter next(fList);
   while (vObj = (TObjString*)next()) {
//or:   while (vObj = (TObjString*)next.Next()) {
      vName = TString(vObj->GetName());
      cout << "vName:  " << vName << endl;
   }//while

   cout << "Directory:  " << fDir << endl; //Error: No symbol fDir!!

   next.Reset();
   while (vObj = (TObjString*)next()) {
      vName = TString(vObj->GetName());
cout << "Name:   " << vName << endl;
   }//while

1, It is not quite clear to me why I can write "(TObjString*)next()"
instead of "(TObjString*)next.Next()". Which way is better?

2, Is it enough to define "vObj" or ist it better to create it?

3, When should I use TListIter instead of TIter?

4, When I replace "vObj->GetName()" with "vObj->GetString()" in
lines 7 and 15, the second while loop is no longer able to print
the correct name. Why is this the case?

5, In the first line the directory fDir is printed correctly,
however, in line 11 root prints the following error:
"Error: No symbol fDir in current scope"
However, this happens only when fList has more than one item!!
Somehow, iterating fList using "while(..)" seems to scramble the
memory.
Can somone tell me what kind of mistake is in this part of the
code?

Thank you in advance.

Best regards
Christian
----------------------------------
C.h.r.i.s.t.i.a.n  S.t.r.a.t.o.w.a
V.i.e.n.n.a,  A.u.s.t.r.i.a



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:58 MET