TDataMember and TMethodCall

From: Wensheng Deng (wdeng@rcf.rhic.bnl.gov)
Date: Mon Jan 17 2000 - 18:30:59 MET


Hi,

I am trying to use the ROOT class reflection. I built a class named
'myclass'. 

I list below my root session when playing with this class and the source
files for it.

My question is why I can get my integer variable by GETTER method but
can't get my float variable? Thanks!

-Wensheng


Here is my ROOT session
===============================================
 *** Start at Date : 17-Jan-2000 Time : 12:6:35 ***
QAInfo:You are using STAR_LEVEL : new and ROOT_LEVEL : 2.23.10 
root.exe [0] gSystem->Load("StRtti.so")
(int)0
root.exe [1] myclass *mc = new myclass()
root.exe [2] mc->SetMyInt(3)
root.exe [3] mc->SetMyFloat(3.5)
root.exe [4] TClass *mcc = mc->IsA()
root.exe [5] TDataMember *dmInt = mcc->GetDataMember("fMyInt")
root.exe [6] TMethodCall *getInt = dmInt->GetterMethod()
root.exe [7] TMethodCall *setInt = dmInt->SetterMethod()
root.exe [8] Long_t l
root.exe [11] getInt->Execute(mc,"",l)
root.exe [12] l
(Long_t)3
root.exe [13] TDataMember *dmFloat = mcc->GetDataMember("fMyFloat")
root.exe [14] TMethodCall *getFloat = dmFloat->GetterMethod()      
root.exe [15] TMethodCall *SetFloat = dmFloat->SetterMethod()
root.exe [16] Double_t d
root.exe [17] getFloat->Execute(mc,"",d)
root.exe [18] d
(Double_t)0.00000000000000000e+00
root.exe [19] 
  
Here is hh file --- myclass.hh
===============================================
#ifndef myclass_hh
#define myclass_hh

#include "TObject.h"

class myclass:public TObject {
  
public:
  Int_t   GetMyInt();
  void    SetMyInt(Int_t i); 

  Float_t GetMyFloat();
  void    SetMyFloat(Float_t f); 

private:
  Int_t   fMyInt;
  Float_t fMyFloat;
  ClassDef(myclass,1)
};

#endif

Here is cc file
==============================================
#include "myclass.hh"

ClassImp(myclass)

Int_t  myclass::GetMyInt() { 
  return fMyInt; 
}

void  myclass::SetMyInt(Int_t i) { 
  fMyInt = i; 
}

Float_t  myclass::GetMyFloat() {
  return fMyFloat;
}

void  myclass::SetMyFloat(Float_t f) {
  fMyFloat = f;
} 



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:17 MET