У меня возникли некоторые трудности с указателями на функции. У меня есть базовый класс, который определяет указатель на функцию, который через typedef double (*function)(double

[*]
Быстрый дополнительный вопрос: почему приведенное выше определение типа не компилируется?
Выдает следующую ошибку: ошибка: функция «const» и «летучая» спецификаторы функции недопустимы в объявлении типа
Для приведенной ниже части я использую typedef double (*function)(double

Исходный файл дочернего класса:
PndLmdROOTDataModel1D::PndLmdROOTDataModel1D(interpolation_type intpol_type) { если (intpol_type == КОНСТАНТА) { setModelFunction(&PndLmdROOTDataModel1D::evaluateConstant); } иначе, если (intpol_type == СПЛАЙН) { setModelFunction(&PndLmdROOTDataModel1D::evaluateSpline); } еще { setModelFunction(&PndLmdROOTDataModel1D::evaluateLinear); } } И базовый класс (заголовочный файл):
класс MultiModel1D: public Model1D { защищено: функция model_func; публика: МультиМодель1D(); виртуальный ~MultiModel1D(); void setModelFunction (функция f); } При компиляции я получаю следующую ошибку:
примечание: не известно преобразование аргумента 1 из double (PndLmdROOTDataModel1D::*)(double*)» на «функцию {она же double (*)(двойной*)}’
Я использую указатель на функцию из-за проблем со скоростью (по крайней мере, я думаю, что это должно быть быстрее, чем постоянно выполнять какой-то переключатель). Что я делаю не так? Возможно, есть какой-то шаблон проектирования, который послужит лучшей альтернативой... Заранее спасибо!
Стив