#include #include #include class CNumber : public TObject { private: Int_t nr; public: CNumber () { nr = 0; } CNumber (Int_t _nr) { nr = _nr; } virtual ~CNumber() { } Int_t GetNumber() { return nr; } virtual void Print (Option_t* option="") const { std::cout << nr << std::endl; } ClassDef(CNumber, 1); }; void TClonesArrayError() { TTree *tree = new TTree("tree", "MyTree"); TClonesArray *data = new TClonesArray("CNumber"); tree->Branch("data", &data); new (data->operator[](0)) CNumber(2); new (data->operator[](1)) CNumber(3); data->Print(); tree->Fill(); std::cout << "Number entries in array: " << data->GetEntries() << std::endl; std::cout << "Removing the first entry in array." << std::endl; data->Remove(data->operator[](0)); data->Print(); std::cout << "Number entries in array: " << data->GetEntries() << std::endl; std::cout << "Filling the tree will now crash ..." << std::endl; tree->Fill(); }