本机类型和泛型



我想创建一个本机数组并访问它的托管代码。我不想将代码重写为不同的类型,(intlongfloatdouble(因此尝试使用泛型。

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 *':不允许对泛型类型参数进行间接

然而,有没有一种方法可以使用泛型来做到这一点?除了使用泛型之外,还有其他方法可以做到这一点吗?

不,不能使用泛型来实现这一点。但是你可以使用模板。这避免了您的问题所强调的代码重复,但不会像泛型那样允许运行时实例化。

相关内容

  • 没有找到相关文章

最新更新