管理対象クラスのメンバーとして.NET基本データ型(static int i)、または管理対象外のものへのポインター(DWORD * pid、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
};
または、アンマネージクラスを宣言し、必要なものをそこに配置して、マネージクラスからそのクラスへのポインターを設定することもできます。(非静的コンテキストでこれを行う場合は、ファイナライザーからアンマネージメモリを削除することを忘れないでください。)
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
};