Hi Silvia, You need to either make TChannel a class template or select which instantiation of TOptional your TChannel should use. In other word, either class TChannel : public TObject { TOptional<int> *opt; }; or template <class T> class TChannel : public TObject { TOptional<int> *opt; }; Also note that in ROOT 3.03.09 and above, ClassDefT can be replace by ClassDefT and ClassDefT2 is not necessary anymore. Cheers, Philippe. -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Silvia Eccher (Iannone) Sent: Thursday, December 12, 2002 8:57 AM To: roottalk@pcroot.cern.ch Subject: [ROOT] Class Template Definition Dear rooters, I nedd to define a class (TChannel) containing a TOptional object which is a template class, but when I compile the source I obtain the follow messages: > In file included from TExample.cxx:16: > TExample.h:23: `T' was not declared in this scope > TExample.h:23: template argument 1 is invalid > TExample.h:23: ISO C++ forbids declaration of `opt' with no type Can you help me? Thanks in advance, Silvia. /----- Appendix ------------------------------ / my header file: TExample.h #ifndef ROOT_TExample #define ROOT_TExample #include <TObject.h> template <class T> class TOptional : public TObject { private: UInt_t lenght; T value; public: TOptional(); ClassDefT(TOptional,1); }; ClassDefT2(TOptional,T) ClassImpT(TOptional,T) class TChannel : public TObject { private: char ch_name[20]; TOptional<T> *opt; public: TChannel(); ClassDef(TChannel,1) }; #endif My source: TExample.cxx #include "TExample.h" TChannel(); /---------------------------------------------/ My compile command: g++ -O -Wall -fPIC -D_REENTRANT -I/afs/fusione.it/project/fturoot/ROOT/include/root -c TExample.cxx -- Silvia Eccher (Iannone) <silvia.eccher@frascati.enea.it>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:23 MET