[vtkusers] vtkInteractorStyle

Alan McIntyre fusion at thuule.pair.com
Fri Oct 4 19:48:58 EDT 2002


Steffen,

As far as passing function pointers goes, there is a difference between 
this:

	obj->SetSomething(my_function());

and this:

	obj->SetSomething(&my_function);

The first one passes the result of a call to function() into the 
SetSomething method, while the second one passes the address of the 
'my_function' function into the SetSomething method.  I think the '&' in 
the second example isn't necessary in the eyes of some (most?) 
compilers, but having it there doesn't do any harm as far as I know. 
The second example is the one you want in your particular case.

As for passing a C++ class method in as the parameter to 
SetLeftButtonPressMethodArgDelete, I'm not exactly sure about the 
'proper' way to do that, since it appears to be expecting a plain C 
function.  What kind of compiler error are you getting?

I don't have the VTK source on my machine here at home right now, so I'm 
kind of in the dark as to the usage/behavior of 
SetLeftButtonPressMethodArgDelete, but I'm wondering if the reason the 
it expects a pointer to a function with a void* parameter is so that 
class methods can be given to it.  If I recall correctly, isn't the 
pointer to the object pushed onto the stack (kind of like an invisible 
first parameter) when calling class methods?   If that's the case, 
perhaps the get_mousePos(void*) method in Steffen's example could be 
passed if it was declared like this:

	void get_MousePos();

Somebody please let me know if I'm totally clueless here; I don't want 
to give Steffen any bad info.

Thanks,
Alan


Steffen Oeltze wrote:
> 
> Alan McIntyre wrote:
> 
>> Steffen,
>>
>> The "void(*f)(void *)" parameter is a pointer to a C function that 
>> looks like this:
>>
>> void func(void *);
>>
>> How much that helps you out I don't know. If you could post some more 
>> code I can try to help, even though I haven't done much with VTK in C++.
>>
> The function I use is:
> 
> void SliceView::get_mousePos(void *)
> {
>    ..................
> }
> 
> The function declaration is:
> 
> void get_mousePos(void *);
> 
> The assignment (which doesn't work) of the function:
> 
> interactorStyle->SetLeftButtonPressMethodArgDelete(get_mousePos());
> 
> _______________________________________________
> This is the private VTK discussion list. Please keep messages on-topic. 
> Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
> 





More information about the vtkusers mailing list