myClass::calculateA1()
не является функцией ;скорее это функция-член .Таким образом, типы, естественно, не совместимы.
Тип &myClass::calculcateA1
равен double (myClass::*)(const double &) const
, который является функцией указателя на член (PTFM).Обратите внимание, что вы можете использовать PTMF только вместе с указателем на экземпляр объекта (т. Е. myClass*
).
Если вы измените свой typedef, вы можете как минимум правильно сохранить указатели:
typedef double (myClass::*pt2calculateA)(const double &) const;
Вы должны будете сказать &myClass::calculateA1
и т. Д., Чтобы взять адрес.
В C ++ 11 вы можете инициализировать массив в списке инициализатора:
myClass() : calculateA{&myClass::calculateA1, &myClass::calculateA2} { }