[vtkusers] Templated class members as callbacks for vtkCommand?
Parag Chandra
pchandra at radonc.unc.edu
Thu Apr 17 12:25:00 EDT 2003
Hi all,
I'm trying to attach a templated member function as the callback for an
event in VTK. I searched the mailing list and found that I either had to
make the member static, or call the member function indirectly through a
plain C function. I chose the second approach because the first won't
work for my purposes, so my code looks something like this:
static void
HistogramInteractorProcessPickEvent(vtkObject *object, unsigned long
event,
void *clientData, void *callData)
{
static_cast<HistogramInteractor<itk::Image<double,2>
>*>(object)->ProcessPickEvent(object,
event, clientData, callData);
}
Then inside the class, I do the following:
m_PickEventCommand->SetCallback(&HistogramInteractorProcessPickEvent);
this->RemoveObservers(vtkCommand::LeftButtonPressEvent);
this->AddObserver(vtkCommand::LeftButtonPressEvent,
m_PickEventCommand);
where m_PickEventCommand is a vtkCallbackCommand. This works fine;
however, what I'd really like to do is have the C function above be
templated over the type of the itk Image, so something like:
template <class TInputImage>
static void
HistogramInteractorProcessPickEvent(vtkObject *object, unsigned long
event,
void *clientData, void *callData)
{
static_cast<HistogramInteractor<TInputImage>*>(object)->ProcessPickEvent
(object,
event, clientData, callData);
}
This generates an error during compilation under both MSVC6 and Linux
gcc3.2, something akin to:
C:\development\aks\Code\Visualization\aksHistogramInteractor.cxx(68) :
error C2664: 'SetCallback' : cannot convert parameter 1 from 'void
(class vtkObject *,unsigned long,void *,void *)' to 'void (__cdecl
*)(class vtkObject *,unsigned long,void *,void *)'
Is there any way to make the scenario I described above work? I had a
much easier time defining callbacks under ITK, so it seems like there
should be some way to do it under VTK as well. Thanks in advance.
Best regards,
-Parag Chandra
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20030417/36b7742e/attachment.htm>
More information about the vtkusers
mailing list