1
我一直在阅读这个http://msdn.microsoft.com/en-us/magazine/cc163681.aspx,并发现有关定义抽象基类非常有趣的部分。C++/CLI能否将C++的抽象类返回给C#?
包装C++类的C++/CLI类是否有可能返回一个指向纯虚拟基类(从C++中的函数)到C#的指针?我有一个相当复杂的解决方案,但能够直接返回指向抽象类的指针会简化很多事情。我想返回一个指针的接口被structred像这样(在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#中的本地C++对象吗?或者你只需要将指针值作为整数并传递给它?你可以编写你想要实现的伪代码(从C#的角度来看)。 – 2012-03-06 12:26:49
为什么要将指向纯虚拟基类的指针传递给C#?用C++/Cli包装并不意味着像这样工作。这篇文章只是说“C#抽象类的C++/Cli对象是'ref class XXX abstract ...'” – 2012-03-06 12:50:54
C#代码没有用于指向抽象C++类对象的指针。声明抽象托管类并返回*引用*是肯定支持的。 – 2012-03-06 13:39:03