Указатель члена класса C ++ на глобальную функцию - PullRequest
6 голосов
/ 15 мая 2011

Я хочу иметь класс, который имеет в качестве члена указатель на функцию

здесь указатель функции:

typedef double (*Function)(double);

здесь функция, которая соответствует определению указателя функции:

double f1(double x)
{
    return 0;
}

вот определение класса:

class IntegrFunction
{
public:
    Function* function;
};

и где-то в основной функции я хочу сделать что-то вроде этого:

IntegrFunction func1;
func1.function = f1;

Но,этот код не работает.

Можно ли назначить члену класса указатель на глобальную функцию, объявленную как указано выше?Или я должен что-то изменить в определении указателя функции?

Спасибо,

Ответы [ 5 ]

9 голосов
/ 15 мая 2011

Замените это:

class IntegrFunction
{
public:
    Function* function;
};

на это:

class IntegrFunction
{
public:
    Function function;
};

Ваш typedef уже создает указатель на функцию.Объявление Function* function создает указатель на указатель на функцию.

4 голосов
/ 15 мая 2011

Просто замените

Function* function;

на

Function function;
2 голосов
/ 15 мая 2011

Вы объявляете переменную как Function* function, но Function typedef уже является typedef для указателя.Таким образом, тип указателя на функцию просто Function (без *).

0 голосов
/ 15 мая 2011

Замените

typedef double (*Function)(double);

на

typedef double Function(double);

для определения типа функции.Затем вы можете написать * при его использовании.

0 голосов
/ 15 мая 2011

Вам нужно использовать оператор адреса для получения указателя на функцию в Стандарте C ++ 03.

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