[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