作为托管类c+;成员的非托管var+; 我是N.NET C++的新手,尝试创建类: public ref class Klient { public: Klient(){} // zmienne static DWORD klienty[41][2]; static int i = 1; static DWORD* pid; static HANDLE* handle; //funkcje };
但MSV表示:作为托管类c+;成员的非托管var+; 我是N.NET C++的新手,尝试创建类: public ref class Klient { public: Klient(){} // zmienne static DWORD klienty[41][2]; static int i = 1; static DWORD* pid; static HANDLE* handle; //funkcje };,class,c++-cli,declaration,mixed-mode,Class,C++ Cli,Declaration,Mixed Mode,但MSV表示: error C4368: cannot define 'klienty' as a member of managed 'Klient': mixed types are not supported 这段代码有什么问题?您可以将.NET基本数据类型作为托管类(static int i)的成员,或指向任何非托管对象的指针(DWORD*pid,HANDLE*HANDLE),但不允许直接拥有非托管对象,为此,整数数组将被视为非托管对象 因为这里唯一的问题是非托管阵列,所以可以将其切换
error C4368: cannot define 'klienty' as a member of managed 'Klient': mixed types are not supported
这段代码有什么问题?您可以将.NET基本数据类型作为托管类(static int i)的成员,或指向任何非托管对象的指针(DWORD*pid,HANDLE*HANDLE),但不允许直接拥有非托管对象,为此,整数数组将被视为非托管对象 因为这里唯一的问题是非托管阵列,所以可以将其切换到托管阵列
public ref class Klient
{
public:
Klient(){}
// zmienne
static array<DWORD,2>^ klienty = gcnew array<DWORD,2>(41,2);
static int i = 1;
static DWORD* pid;
static HANDLE* handle;
//funkcje
};
但是如何在不改变编程语言的情况下解决这个问题一些解释会很有帮助。在创建类类型的指针变量时,静态的需要是什么?我们会松开OOP吗?在托管类析构函数中使用
delete unmanagedStuff
可以吗?还是会导致内存泄漏?感谢static
,因为OP就是这样设置的。如果是非静态的,则需要删除以防止内存泄漏。
public class HolderOfUnmanagedStuff
{
public:
DWORD klienty[41][2];
int i;
DWORD* pid;
HANDLE* handle;
HolderOfUnmanagedStuff()
{
i = 1;
}
};
public ref class Klient
{
public:
Klient(){}
// zmienne
static HolderOfUnmanagedStuff* unmanagedStuff = new HolderOfUnmanagedStuff();
//funkcje
};