On Wed, Jul 1, 2009 at 1:35 AM, trc<keats73-plp...@yahoo.co.uk> wrote:
> You cannot use dynamic_cast to convert the void pointer  pls->dev to a 
> QtPLWidget pointer.
>
> The purpose of dynamic_cast is to do a safe (runtime checked) cast
> from a base class to a derived class or vice-versa. As QtPLWidget is
> not derived from void the cast fails.

There is a C-style cast to a QWidget * first.  Its result is then
passed to dynamic_cast, which should work in such case (but does not
for some reason; multiple inheritance problems?).

> For your code you have to use C++ reinterpret_cast or a C style cast.

Agreed.  I don't see why dynamic_cast should be necessary here.  In
any case, 'widget' variable is of type QtPLDriver * and all concrete
types (QtRasterDevice, QtSVGDevice, QtEPSDevice, QtPLWidget) are not
used after the cast.  There's also a cryptic comment that I don't
understand "We have to dynamic_cast to make sure the good virtual
functions are called".  Everything dynamic_cast can do here is to cut
off all derived types except the specified ones (they would be cast to
NULL, but I don't see why that should be needed).

Am I missing anything about that code?

Dmitri

-- 
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <griboz...@gmail.com>*/

------------------------------------------------------------------------------
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to