How to Declare an array of function pointers?


 
Thread Tools Search this Thread
Top Forums Programming How to Declare an array of function pointers?
# 1  
Old 05-29-2018
How to Declare an array of function pointers?

I am attempting to create an array of function pointers. The examples I follow to do this are from:

support.microsoft.com/en-us/help/30580/how-to-declare-an-array-of-pointers-to-functions-in-visual-c

stackoverflow.com/questions/5093090/whats-the-syntax-for-declaring-an-array-of-function-pointers-without-using-a-se

thegeekstuff.com/2012/01/advanced-c-pointers/?utm_sou

Here is the syntax I came up with that I put in the class declaration of a header file:
Code:
double GetdCdK( double V );
double GetdCdn( double V );
double GetdCdVo( double V );
double GetdCdCo( double V );

// The below gets the error:
// include\junctioncap.h|142|error: cannot convert 'JunctionCap::GetdCdK' from type 'double (JunctionCap::)(double)' to type 'double (*)(double)'|
// for each of the three other functions also

double ( *jacobian[4] )( double ) = { GetdCdK, GetdCdn, GetdCdVo, GetdCdCo };

// The below gets the error:
// include\junctioncap.h|142|error: too many initializers for 'double (* [0])(double)'|
// In addition to the above errors.

double ( *jacobian[] )( double ) = { GetdCdK, GetdCdn, GetdCdVo, GetdCdCo };

What is wrong with this syntax? Can this be done in gcc?

Last edited by spflanze; 05-30-2018 at 05:41 PM..
# 2  
Old 05-30-2018
The code you give is not an error in my compiler, C or C++, so I suspect they really are a different kind of function. Be careful with your const specifiers, you need to get them exactly right.

They're not function members, are they? You can't make function pointers to those, unless they're static. (And making them static will cut them off from class-local values.)

Last edited by Corona688; 05-30-2018 at 12:30 PM..
# 3  
Old 05-30-2018
Those functions are class members. I did not know that pointers cannot be gotten for class member functions. That was the problem. Thanks. Smilie
# 4  
Old 05-31-2018
Quote:
Originally Posted by spflanze
Those functions are class members. I did not know that pointers cannot be gotten for class member functions. That was the problem. Thanks. Smilie
A function pointer does not contain enough information to point to a member function, it's missing the class instantiation ( the bit of memory containing member variables, etc) so C++ won't let you do it.

You can do it with static member functions because they don't even have access to a class' members. If that doesn't matter, if they really don't use the class, you can make them static and get pointers to them.
Code:
class myclass {
public:
        static int myfunction(int that) {
                return(42);
        }

};

int (*fn)(int) = myclass::myfunction;


Last edited by Corona688; 05-31-2018 at 01:18 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to declare an array in UNIX and print the elements with tab delimits?

Hello, In a shell script, I want to declare an array and subsequently print the elements with tab delimits. My array has the following structure and arbitrary elements: myArray=('fgh' 'ijk' 'xyz' 'abc'); Next, I would like to print it with a '\n' at the end. Thanks for your input! ... (2 Replies)
Discussion started by: Gussifinknottle
2 Replies

2. Programming

Pointers and array

Hello, I read from a book exercise for a challenge. How to print out each letter of char array a by two different pointers pa and ppa in the example? I have tried my code for letter "r" by testing without full understanding as only the first one worked. #include<stdio.h> int main() { char... (17 Replies)
Discussion started by: yifangt
17 Replies

3. Programming

question about Function pointers

Hello forum memebers As iam new to C++ programming i am little bit confuse to understand the function pointers. Please help me to understand the function pointers with examples are suggest me good site for this,Its better if it have picturial representation ie any PPTS available in Google.... (2 Replies)
Discussion started by: rajkumar_g
2 Replies

4. Programming

Traversing in Array of pointers

Please find the below program. the requirement and description of the program also given: ganesh@ubuntu:~/my_programs/c/letusc/chap9$ cat fa.c.old /* Program : write a program to count the number of 'e' in thefollowing array of pointers to strings: char *s = { "We will teach you how... (12 Replies)
Discussion started by: ramkrix
12 Replies

5. Programming

Problem with array of pointers

Hi All, I am using the array of pointers and storing the address of string.This is a global list. So i am using extern to give the reference of this list to another file and using reading the data from this string. But list is being corrupted and string is missing some characters in... (2 Replies)
Discussion started by: lovevijay03
2 Replies

6. Shell Programming and Scripting

How to declare an array to take more than 10,000 characters

Hi Guys Need some help I am reading the string values from the text files into the shell script and had them feed into array I have declared an associative array as TYPE t_user_id_tab IS TABLE OF VARCHAR2(3000);\n my_user_id t_user_id_tab;\n varchar2 is limiting me to take only... (0 Replies)
Discussion started by: pinky
0 Replies

7. Programming

Pointers and array

hi all, let say i have a pointer exit, and this exit will store some value. how can i store the value that the pointer points to into an array and then print them out from the array. thanks in advance (2 Replies)
Discussion started by: dianazheng
2 Replies

8. Shell Programming and Scripting

declare, assign variables using array, counter, loop

using bash Tru64... converting DCL to shell... any tips to make this work would be greatly appreciated. Below is my failed attempt to assign command line input to variables by first declaring an array. I use a counter to create unique variables in a loop through the array. I need to call... (3 Replies)
Discussion started by: egkumpe
3 Replies

9. Programming

Regarding Function and Pointers.

HI, Here is some thing that is puzzling me from a long time. Can some body explain me this with example. The question is :- What is the difference between function pointer and pointer to a function. Where do we actually use the function pointers and pointer to functions. Thanks in... (0 Replies)
Discussion started by: S.Vishwanath
0 Replies

10. Programming

Sharing C++ Objects with virtual function table pointers

I am pondering the next question: Can I safely sare objects that have virtual functions (i.e. have virtual function table pointers) between two processes ? Where will the pointers point to in each process ? What I am afraid of is that in the creating process the pointer will indeed point to... (2 Replies)
Discussion started by: Seeker
2 Replies
Login or Register to Ask a Question