Hi All,
  sorry for the lenghty message that follows. I could not make it any
shorter. Ok, I am playing with singletons and I have the following
implementation
rtest.h ----------------------------------------------------------------------
#include "TObject.h"
#include <stdio.h>
class AliSingleton : public TObject
{
private:
  static AliSingleton* fInstance;
  Int_t fData;
protected:
  AliSingleton() {printf("Singleton creator called\n");}
public:
  static AliSingleton* Instance() {
    if(!fInstance) fInstance = new AliSingleton;
    //    fInstance->Data()=101;
    return fInstance;
  }
  virtual ~AliSingleton() {
    printf("Singleton distructor called %p\n",fInstance);
  }
  Int_t& Data() { return fData;}
  void SetData(Int_t i) { fData=i;}
  ClassDef (AliSingleton,1)
};
rtest.cxx --------------------------------------------------------------------
#include "rtest.h"
AliSingleton* AliSingleton::fInstance=0;
ClassImp(AliSingleton)
Nothing to be very proud of...
Now I have the following main program
#include <TROOT.h>
#include <TFile.h>
#include "rtest.h"
TROOT root("TROOT","Application");
int main () {
  printf("Setting data\n");
  AliSingleton::Instance()->Data()=101;
  printf("data = %d\n",AliSingleton::Instance()->Data());
  AliSingleton::Instance()->SetData(99);
  printf("data = %d\n",AliSingleton::Instance()->Data());
  AliSingleton::Instance()->SetData(98);
  printf("data = %d\n",AliSingleton::Instance()->Data());
}
which gives the following result
Setting data
Singleton creator called
data = 101
data = 99
data = 98
If I run the program as a macro instead, I get
Setting data
Singleton creator called
data = 0
data = 99
data = 98
That is the statement AliSingleton::Instance()->Data()=101; is not obeyed
in the macro. Any idea? Thanks, 
                                            Federico Carminati
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:43 MET