我必须在 CLI 中包装一些本机类。
但是我对如何在它们的包装器中覆盖它们的虚拟方法有疑问。因此,假设有一个带有虚拟方法的本机类:
class NativeClass {
virtual void VMethod(std:string text) {
...
}
};
你想用一个托管类来包装它......我想做这样的事情:
#pragma unmanaged
class NativeWrapper : public NativeClass {
public:
typedef void (*VMethodFunc)(std::string);
NativeWrapper(VMethodFunc VMethodFuncPtr)
: m_VMethodFuncPtr(VMethodFuncPtr) {}
void VMethod(std::string text) {
m_VMethodFuncPtr(text);
};
private:
VMethodFunc m_VMethodFuncPtr;
};
#pragma managed
ref class ManagedWrapper {
public:
// To Override
virtual void VMethod(String^ text) {
Console.WriteLine(text);
};
private:
void VMethod(std::string text) {
String^ sErr = gcnew String(text.c_str());
VMethod(sErr);
};
};
但是如何将 ManagedWrapper::VMethod(std::string) “绑定”到 VMethodFunc 函数指针?我在 MSDN 中找到了这篇文章,但与我想的不完全相同。
问候。