unmanaged var as member of managed class c++

后端 未结 1 1254
逝去的感伤
逝去的感伤 2020-12-21 00:52

I\'m novice in .net c++ and trying to create class looking like:

public ref class Klient
{
public:
    Klient(){}
    // zmienne
    static DWORD klienty[41]         


        
相关标签:
1条回答
  • 2020-12-21 01:31

    You can have .NET basic data types as members of your managed class (static int i), or pointers to anything unmanaged (DWORD* pid, HANDLE* handle), but you're not allowed to have an unmanaged object directly, and the array of integers counts as an unmanaged object for this purpose.

    Since the only item giving you a problem here is the unmanaged array, you could switch it to a managed array.

    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
    };
    

    Or, you can declare a unmanaged class, put whatever you need to in there, and have a pointer to it from the managed class. (If you do this in a non-static context, don't forget to delete the unmanaged memory from your finalizer.)

    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
    };
    
    0 讨论(0)
提交回复
热议问题