[vtkusers] vtkWin32OpenGLRenderWindow vtkSmartPtr error

Sean McInerney seanm at nmr.mgh.harvard.edu
Fri Aug 27 12:11:37 EDT 2004


Hi Eric,

   First off, unless you need access to some specialized methods of 
vtkWin32OpenGLRenderWindow, I would have the smart pointer hold a 
reference to a regular old vtkRenderWindow (i.e. 
vtkSmartPtr<vtkRenderWindow>). This way you can simply call 
vtkRenderWindow::New() and rely on VTK to instantiate the appropriate 
subclass.

   Second, because VTK includes only the parent class header in each 
class's header file and relies on forward declarations for references to 
other types, you will have to include the header of the derived class in 
whatever file implements "w2if->SetInput(RenderWindow_.get );". In your 
case, either:

#include "vtkWin32OpenGLRenderWindow.h"
   -OR-
#include "vtkRenderWindow.h" // if you case use my first suggestion

For more information, see:
<http://www.vtk.org/Wiki/VTK_FAQ#Forward_declaration_in_VTK_4.x>

-Sean

> 
> Does anyone know how to solve this?  I have a renderWindow wrapped in a
> vtkSmartPtr and I get an compile error when I try to pass it the
> vtkWindowToImageFilter SetInput function.  
> 
> 
> vtkSmartPtr<vtkWin32OpenGLRenderWindow>  RenderWindow_;
> 
> 
> implementation:
> 
> vtkWindowToImageFilter *w2if = vtkWindowToImageFilter::New();
> 
> 
> w2if->SetInput(RenderWindow_.get );
> 
> error:
> 
> c:\MDV\DVL\dvlcanvas.cpp(169) : error C2664:
> 'vtkWindowToImageFilter::SetInput' : cannot convert parameter 1 from
> 'vtkWin32OpenGLRenderWindow *(void) const' to 'vtkWindow *'
>         There is no context in which this conversion is possible
> 
> Thanks,
> 
> Eric
> 



More information about the vtkusers mailing list