Hi, Is inheriting virtual member functions from a compiled class supposed to work correctly in CINT? I couldn't find it listed in CINT's Limitations page, although thinking about it I came to the conclusion it would be awfully hard to implement (maybe I'm wrong). It's something that would be extremely useful for us though, so I thought I'd ask. here's an example: file ~/test/derive.C: --------------------------- class TBlah : public TObject { public: TBlah(); virtual void Print(Option_t *opt); }; inline TBlah::TBlah() {} void TBlah::Print(Option_t *opt) { printf("TBlah's Print thing.\n"); } ----------------------------- Root session (in this case, 2.23/09 on a Solaris machine) root [0] .L ~/test/derive.C root [1] TBlah a root [2] a.Print() OBJ: TObject TObject Basic ROOT object root [3] a.Print("test") TBlah's Print thing. root [4] TObject *b=&a root [5] b.Print() OBJ: TObject TObject Basic ROOT object root [6] b.Print("test") OBJ: TObject TObject Basic ROOT object root [7] ------------------------------ Line 2 is not correct, but probably an easy fix having to do with propagating default arguments from base class headers, since Print takes a default argument of NULL declared in TObject.h. Line 3 means CINT works correctly when it knows the type of the pointer, as I would expect. Line 6 is the serious one, since it means that the interpreted derived class's virtualness isn't available to CINT. Is there any chance of this getting fixed? Otherwise being able to declare derived classes interpretively from compiled base classes is almost useless (and certainly ought to warrant a warning when doing it, or at least when overriding virtual functions, since otherwise some very non-intuitive behavior could result). George Heintzelman gah@bnl.gov
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:44 MET