Hi William, it is forbidden to have a call to non-default constructor in the include file. You should construct `tracks' in the class `Simple' constructor instead: Simple::Simple() : tracks("MPXPAIR", 10) { ...... } Regards, Pasha. -------------------------------------------------------------------------------- William J. Deninger writes: > Hello, > > I've discovered that I'm unable to compile a class with a TClonesArray data > member using MCVC v5.0 compiler without an error. Is it not syntactically > correct to have a data member use a specialized constructor within the class > declaration? > > // code.. > #include "TObject.h" > #include "MPXPAIR.h" // class MPXPAIR inherits TObject > #include "TClonesArray.h" > class Simple : public TObject > { > public: > Simple(); > virtual ~Simple(); > TClonesArray tracks("MPXPAIR", 10); > ClassDef(Simple,1) > }; > > // compile message > Compiling... > Simple.cpp > D:\Root-Trace\Simple.h(18) : error C2059: syntax error : 'string' > Error executing cl.exe. > Simple.obj - 1 error(s), 0 warning(s) > > Of course, if I have the a variable of type TClonesArray instantiated from > within a member function, things compile perfectly but I loose the "public" > accessibility of the variable. To get around the error I can make the > declared data member a pointer of type TClonesArray and having the memory > allocated and constructor called from with the Simple class constructor. > But this seems to have repercussions on my ability to use Simple in a TTree > with splitlevel = 1. My whole reason for using TClonesArray was to get away > from pointers. > > How should I be approaching this? And much thanks for all your help. > > > William Deninger > deninger@uiuc.edu > > >
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:26:23 MET