Как устранить ошибку C2205 (невозможно инициализировать внешние переменные с областью действия блока) - PullRequest
0 голосов
/ 28 июля 2011
int inc(int a)
{
    return (++a);
}
int Multi (int *a, int *b, int *c)
{
    return (*c = *a**b);
}


typedef  int(FUNC1) (int in);
typedef  int(FUNC2) (int *, int *, int *);

void Show (FUNC2 fun, int arg1, int *arg2)
{
    FUNC1 p = &inc; //this sentence can't access a pointer of a function
    int temp = p(arg1);
    fun (&temp, &arg1, arg2);
    cout<<(*arg2)<<endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int a;
    Show(Multi,10,&a);
    return 0;
}

1 Ответ

0 голосов
/ 28 июля 2011

Вы указали неверный тип указателя функции. Попробуйте это:

typedef  int(*FUNC1) (int);
typedef  int(*FUNC2) (int *, int *, int *);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...