Hello, I have a problem using namespace. If I define two classes (MyClass, MyLeaf) inside a namespace (e.g. namespace TG), with MyLeaf inherited from MyClass, and MyClass inherited from TObject, then root forgets that MyLeaf is inherited from TObject, too. MyLeaf looks fine with the .class command, but using the ClassDraw() command, MyLeaf looks like a base class. Even worse, when trying to save a MyLeaf Object-Pointer in a TClonesArray I get the following error: Error in <TClonesArray::TClonesArray>: TG::MyLeaf does not inherit from TObject I am using root version 2.25.03. Is there a solution to this problem? Goodbye, Thorsten Code: (MyClass.hh) #include <TObject.h> namespace TG { class MyClass : public std::TObject { public: MyClass(); int Loop(); ClassDef(MyClass,1) }; class MyLeaf : public MyClass { public: MyLeaf(); int print(); ClassDef(MyLeaf,1) }; } // end of namespace MyClass.C: #include <iostream> #include "MyClass.hh" namespace TG { MyClass::MyClass() { std::cout << " MyClass constructor" << endl; } int MyClass::Loop() { cout << " Myclass loop " << endl; return 0; } ClassImp(MyClass) MyLeaf::MyLeaf() { std::cout << " MyLeaf constructor" << endl; } int MyLeaf::print() { cout << " MyLeaf loop " << endl; return 0; } ClassImp(MyLeaf) } LinkDef.h: #ifdef __CINT__ #pragma link off all globals; #pragma link off all classes; #pragma link off all functions; #pragma link C++ nestedclasses; #pragma link C++ nestedtypedefs; #pragma link C++ namespace TG; #pragma link C++ class TG::MyClass; #pragma link C++ class TG::MyLeaf; #endif ---------------------------------------------------- Dr. Thorsten Glebe <Thorsten.Glebe@mpi-hd.mpg.de> Max-Planck-Institut fuer Kernphysik Saupfercheckweg 1 Tel: 06221/516-631 D-69117 Heidelberg Fax: 06221/516-603 ----------------------------------------------------
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:37 MET