Я пытаюсь преобразовать делегат C # в указатель на функцию C ++, используя Managed C ++. Вот метод, который мы ранее использовали:
// Define a delegate
public delegate void ADelegate(Int32);
ADelegate^ delegateInstance;
// Define a function pointer
typedef void (__stdcall *AFuntionPointer)(int);
AFuntionPointer functionPointerInstance;
// Create an instance of a delegate, using GetFunctionPointerForDelegate
delegateInstance = gcnew ADelegate(this, &AClass::AFunction);
// Convert the delegate to a pointer
IntPtr anIntPtr = Runtime::InteropServices::Marshal::GetFunctionPointerForDelegate(delegateInstance);
// Cast the pointer into a function pointer
functionPointerInstance = static_cast<AFuntionPointer>(anIntPtr.ToPointer());
Если я поверну параметр ADelegate
с Int32
на String^
, на какой тип мне следует изменить параметр AFunctionPointer
? Другими словами, если я изменил первые две строки в приведенном выше коде на:
public delegate void ADelegate(String ^);
ADelegate^ delegateInstance;
Как мне изменить следующие две строки?
// To what type does GetFunctionPointerForDelegate translate String^ to?
typedef void (__stdcall *AFuntionPointer)( /* char*? std::string? */ );
AFuntionPointer functionPointerInstance;