Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


Function Pointers!?

This topic is 6253 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Well, me again. I want to use a queue in my game and need to know how to use function pointers! I know that you delare a function pointer like that: typedef int (*VPF)(int,int); But this is only a pointer on functions like int foo(int a,int b); It would be great if there is a possibility to have a pointer on any function like: int foo(int a, int b); void bah(); FPointer f; f = bah; f(); f = foo; f(12,23); How is this done? Thx skrwX

Share this post

Link to post
Share on other sites
I doubt it''s possible, simply because functions, when defined, have a specific address space partially dependent on the number and types of parameters the function is expecting... hence when you create a function pointer to it, the function pointer expects an *exact* match of types and number of params.

You *could* try using a va_array to parse through ''...'' parameters, but I don''t know if this would work. Example:

int (*FunctionPointer)(...);
int Func1(...);
int Func2(...);

FunctionPointer = Func1;
FunctionPointer(dwNumber, szString);

FunctionPointer = Func2;
FunctionPointer(fX, fY, fZ);

Might this work? You''ll have to look up vector array parsing, which isn''t too hard once you have the concept down. Let me know if this works!


Share this post

Link to post
Share on other sites
Guest Anonymous Poster
That can be hard to do in C++ due to it''s strict typeing. In most C compilers you could just define:

long (*FP) ();

which would allow it to point to any function and pass any number of parameters to it.

In C++ more creativity is nessicary, anything short of manipualting the stack yourself probably won''t work. Or perhaps odd use of operator overloading on a fuction pointer type.

Share this post

Link to post
Share on other sites
Wrap classes around your functions.

Define the class with all the parameters your function needs as members, initialise them in the constructor, overload operator() to act as the function call.

I can''t get to my C++ Users journals right now to give you an exact reference, but there was an article recently about using this method to implement callback functions with variable paramaters in a typesafe way. Might have been the March 2001 issue?

It''s worth looking into, it beats naked function pointers out of the field. The STL uses function objects extensively.


Get a stripper on your desktop!

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!