[...]
> Major part of the problem comes from the fact that "you have choosen C++
> and OO". No matter what the tool environment will be, you will live in a
> fragile world. This is a logical consequence.
[...]
Hello everyone,
I still have the feeling, that the major part of the `crash problem' is on
the ROOT part in the CINT/ROOT combination. It seems to have little to do
with OO, but with bookkeeping. ROOT adds its `Named' concept on top of the
C++ idea of object identity. I would say it breaks the OO encapsulation
concept, although it might be be a good feature for interactive work. It
can lead to inconsistencies, since objects can be overwritten although
they should not be `visible' in the usual C++ sense (just think of
file->Get("histogram")). Maybe it would help, if CINT would adjust its own
list of object names with ROOT's list. (It could then also get the correct
type of TObject derived objects.) I understand that this would be a severe
change.
One other favourite problem is, that wrong pointers or non-existing
objects can be drawn onto pads (and then painted) or that attribute
windows of short-lived objects remain (e.g. from TTree::Draw("x")). One
could think of magic-number mechanisms or destructors which work more
robustly together with ROOT's object bookkeeping.
Kind regards
Christoph