Я читал это http://msdn.microsoft.com/en-us/magazine/cc163681.aspx и нашел часть об определении абстрактных базовых классов очень интересной.
Возможно ли, чтобы класс C ++ / CLI, обертывающий класс C ++, возвращал указатель на чисто виртуальный базовый класс (из функции в C ++) в C #? У меня довольно сложное решение, но возможность напрямую возвращать указатель на абстрактный класс сильно упростила бы ситуацию. Интерфейс, на который я хотел бы вернуть указатель, структурирован так (в 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 #, конечно, но это не будет проблемой. Это вообще возможно?
Спасибо.
EDIT - вероятно, следует добавить, что аргументы, передаваемые как указатели, являются буферами, которые заполняются данными внутри функций.