Ваш код недействителен.
Во-первых, в C ++ для создания указателя на функцию-член вам всегда необходимо использовать оператор &
и квалифицированное имя члена,это означает, что ваш вызов funcA
должен выглядеть следующим образом
funcA(&Child::funcToCall); // close, but not yet, see "secondly"
Во-вторых, указатели на элементы контравариантны .Если вы хотите инициализировать объект указателя на базовый член значением указателя на производный член, вы должны использовать явное static_cast
funcA(static_cast<fptr>(&Child::funcToCall));
Обратите внимание, что это допустимое, но потенциально небезопасное преобразование, поскольку онотеперь вы несете ответственность за то, чтобы фактический объект, используемый в левой части вызова (см. «в-третьих»), имел этот член.
В-третьих, для вызова функции через такой указатель вынеобходимо указать конкретный объект с левой стороны, поэтому вызов в funcA
должен выглядеть следующим образом (я предполагаю, что вы хотите вызвать его для *this
объекта)
(this->*FuncToCall)('a');
В-четвертых,ваш funcToCall
должен иметь параметр.Где это?