gpt4 book ai didi

class - 非托管 var 作为托管类 c++ 的成员

转载 作者:行者123 更新时间:2023-12-04 17:11:21 25 4
gpt4 key购买 nike

我是 .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 说:
error C4368: cannot define 'klienty' as a member of managed 'Klient': mixed types are not supported

这段代码有什么问题?

最佳答案

您可以将 .NET 基本数据类型作为托管类的成员(静态 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
};

关于class - 非托管 var 作为托管类 c++ 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588261/

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