Похоже, вы предполагаете, что адрес объекта obj
можно интерпретировать как адрес функции определенного вами типа.
Не может.
Я не совсем уверен, почему у вас такое предположение для начала. Вы, вероятно, предполагаете что-то о внутренней реализации динамической отправки. Но обратите внимание: A::outPrint
, который вы ожидаете вызвать, принимает 1 параметр (this
, который явно не определен), тогда как ваш typedef не предполагает никаких параметров. Таким образом, даже если приведение адресов работает нормально, а адрес, который вы получаете, является адресом функции-члена (с самого начала это натяжение), ваш вызов неверен.
Если вы измените typedef на:
typedef void (*pFun)(A*);
и звонок на
pFunc(&obj);
Это может сработать. Тем не менее, насколько мне известно, поведение по спецификации не определено.