Я хочу создать собственный массив и получить доступ к нему управляемого кода. Я не хочу переписывать код для разных типов (int
, long
, float
, double
), поэтому попытался использовать дженерики.
typedef int IND;
generic <typename T>
public ref class ntvarray
{
void *pnt;
IND sz;
public:
ntvarray(IND length)
{
sz = sizeof(T);
pnt = ::operator new(length*sz);
}
~ntvarray()
{
::operator delete(pnt);
}
void* pointer()
{
return pnt;
}
T getitem (IND index)
{
//c3229
return ((T*)pnt)[index];
}
void setitem (IND index, T value)
{
//c3229
((T*)pnt)[index] = value;
}
};
Я получаю ошибку и знаю причину этой ошибки,
ошибка C3229: 'T *'
: косвенные обращения к параметру универсального типа не допускаются
Однако есть ли способ сделать это, используя дженерики? Есть ли другой способ сделать это, может быть что-то еще, кроме использования дженериков?