gpt4 book ai didi

c++ - C++/CLI 能否将抽象类从 C++ 返回到 C#?

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:33 24 4
gpt4 key购买 nike

我一直在读这个http://msdn.microsoft.com/en-us/magazine/cc163681.aspx并发现有关定义抽象基类的部分非常有趣。

是否可以让包装 C++ 类的 C++/CLI 类将指向纯虚拟基类(从 C++ 中的函数)的指针返回给 C#?我有一个相当复杂的解决方案,但能够直接返回指向抽象类的指针会简化很多事情。我想要返回一个指针的接口(interface)是这样构造的(在 C++ 中)

class CCommsBase
{
virtual DWORD Init(char* info[], int amount, int id1, int id2) =0;
virtual DWORD GetJPVals(SJPV* jpv, DWORD timeoutMS=kiDONTOVERRIDE)=0;
virtual DWORD GetNums(int amount, int* out, DWORD timeoutMS=kiDONTOVERRIDE)=0;
virtual DWORD GetJPWinVal(SJP* jp, int id, DWORD stake, DWORD timeoutMS=kiDONTOVERRIDE)=0;
virtual DWORD Confirm(bool *bConfirmedWin, int id, DWORD timeoutMS=kiDONTOVERRIDE)=0;

virtual bool Connected()=0;
virtual LPWSTR GetErrorString(int errCode)=0;
};

当然,对于 C# 中的重载函数,默认参数必须被替换,但这不是问题。这可能吗?

谢谢。

编辑 - 可能应该添加,作为指针传递的参数是在函数内部填充数据的缓冲区。

最佳答案

C# 无法直接从 native 类调用虚拟方法。您需要做的是编写一个托管 C++/CLI 类,该类反射(reflect) native 类的功能并保存指向它的指针。然后,它将对其方法之一的每次调用委托(delegate)给相应的非托管方法。

关于c++ - C++/CLI 能否将抽象类从 C++ 返回到 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9583020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com