Hi Valery, could you try using dynamic_cast<TVirtualX*> instead in TApplication to see if that works. -- Fons On Thu, Aug 29, 2002 at 07:55:17PM -0400, Valeri Fine wrote: > Hello team, > > I have been spending 2 weeks trying to incorporate the brand new > technique dealing with the various implementation of TVirtualX classes. > It sounded one could eliminate TApplication.cxx class corrections needed > to switch from the "native" to for example "qt" layer. > See: > http://root.cern.ch/root/htmldoc/src/TApplication.cxx.html#TApplication: > LoadGraphicsLibs > > I found the statement there: > > gVirtualX = (TVirtualX *) h->ExecPlugin(2, name.Data(), title.Data()); > > returns the wrong value of gVirtualX in the case of the Qt-based > implementation http://www.usatlas.bnl.gov/~fine/QtRootDownload.html > > This is because of the wrong cast of the multiply inheritance of > TQtThread class made by ExecPlugin method. > The problem manifests just one tries to instantiate via PluginManager > the object of the class derived from several others, and when the first > base class is not a TObject. > In my case that can not be eliminated and the inheritance order can not > be changed due Qt-restriction either. > > I wonder if it is possible to fix this. At least I myself have found no > way to fix things "honestly". This is because I had to hide the fact of > the multiply inheritance from Cint compiler to be able to generate > RootCint dictionary entry. That PluginManager approach requires. > > I do: > > class TQtThread : > #ifndef __CINT__ > public QObject, > #endif > public TQt { > #ifndef __CINT__ > Q_OBJECT > #endif > > I'd like to call your attention that the problem is a general. One might > have gotten a wrong pointer just he tried to use PluginManager to > plug-in the class with the multiply inheirtance in certain order. > > I am begging a pardon for delay with Qt-based ROOT 3.03/08 version due > the problem described above. > > My best regards, > Valeri > -- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248 WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7679480
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:06 MET