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