Вам вообще не нужно PTProcedureCallback
, так как TProcedureCallback
уже является типом указателя.
constructor TTestCallback.Create();
var
pCallback: TProcedureCallback;
begin
// Constructor
inherited;
// Test callback
pCallback := MyCallback;
end;
Тем не менее, вы не можете использовать procedure of object
в качестве обратного вызова C / C ++, если только код C / C ++ не был написан специально для C ++ Builder и фактически не ожидает procedure of object
через * 1008. * расширение компилятора. Если нет, вы не сможете использовать нестатический метод класса в качестве обратного вызова. Однако, если обратный вызов позволяет вам передать определенное пользователем значение, вы можете использовать его для передачи указателя Self
вашего объекта, чтобы ваш обратный вызов мог получить доступ к его нестатическим членам.
Кроме того, ваш TProcedureCallback
использует стандартное соглашение о вызовах Delphi register
(__fastcall
в C ++ Builder), которого нет в компиляторах, отличных от C ++ Builder. Только cdecl
и stdcall
являются соглашениями о переносимых вызовах.