ошибка указателя функции - PullRequest
0 голосов
/ 31 марта 2010

Кто-нибудь может мне помочь с этим простым кодом?

#include <iostream>
using namespace std;

void testFunction(){
    cout<<"This is the test function 0"<<endl;
}

void testFunction1(){
    cout<<"This is the test function 1"<<endl;
}

void testFunction2(){
    cout<<"This is the test function 2"<<endl;
}

void (*fp[])()={testFunction,testFunction1,testFunction2};

int main(){

    //fp=testFunction;
    (*fp[testFunction1])();
    //cout<<"Addrees of the function pointer is:"<<*fp;
}

Я получаю следующую ошибку:

error: invalid types `void (*[3])()[void ()()]' for array subscript|

Ответы [ 3 ]

7 голосов
/ 31 марта 2010

Вы пытаетесь использовать указатель функции в качестве индекса массива. Это не будет летать, индексы массива должны быть целыми числами.

Чтобы вызвать через указатель на функцию, просто вызовите:

(*fp[1])();

или (еще короче!)

fp[1]();

будет работать.

2 голосов
/ 31 марта 2010

Ваша индексация массива fp функций с помощью указателя функции, попробуйте что-то вроде:

(*fp[some_index])();

вместо

2 голосов
/ 31 марта 2010

Я думаю, что вы хотели написать:

(*fp[1])();

То есть вы индексируете массив с помощью int, а не самой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...