MC++ деструктор value class
Есть value class
Код:
generic<typename T>
public value struct pArr
{
internal:
void* Pointer;
int m;
public:
pArr(void* pointer, int m) { this->Pointer=pointer; this->m=m; return; }
//~pArr(void) { this->!pArr(); return; }
//!pArr(void) { free(this->Pointer); return; }
__inline static explicit operator void* (pArr Ptr) { return Ptr.Pointer; }
__inline static explicit operator IntPtr (pArr Ptr) { return (IntPtr)Ptr.Pointer;}
};
public value struct pArr
{
internal:
void* Pointer;
int m;
public:
pArr(void* pointer, int m) { this->Pointer=pointer; this->m=m; return; }
//~pArr(void) { this->!pArr(); return; }
//!pArr(void) { free(this->Pointer); return; }
__inline static explicit operator void* (pArr Ptr) { return Ptr.Pointer; }
__inline static explicit operator IntPtr (pArr Ptr) { return (IntPtr)Ptr.Pointer;}
};
И для него требуется описать деструктор.
Но компилятор ругается и говорит, что деструктор можно описать только для ref class.
Что делать?
Цитата: sigmov
Есть value class
Гммм а написано value struct.
Цитата: hardcase
Гммм а написано value struct.
В MC++ это без разницы -
(value struct~value class)
(ref srtruct~ref class)
отличаются только достпом(public/private) по умолчанию....
Не ясно, зачем вам вообще нужен этот тип, если вы намерены раздавать неуправляемые указатели на инкапсулируемые им данные.
Цитата: Der Meister
Деструкторы и файналайзеры не могут быть объявлены внутри интерфейса или значащего типа.
Да..... Я уже много инфы про это нашел.
А как-нибудь обусловить уничтожение данного объекта нельзя? - просто нужно осбодить память при уничтожении....
Цитата: Der Meister
Не ясно, зачем вам вообще нужен этот тип, если вы намерены раздавать неуправляемые указатели на инкапсулируемые им данные.
Чтоб не париться с Marhal::FreeHGAlloc(...)
В принципе я уже объявил данный тип как класс, но это в 3 раза снизило скорость работы с ним....
Цитата: sigmov
Чтоб не париться с Marhal::FreeHGAlloc(...)
Можно поподробнее о решаемой задаче?