Generics C++/CLI泛型,在数组中使用T<&燃气轮机;和其他收藏品

Generics C++/CLI泛型,在数组中使用T<&燃气轮机;和其他收藏品,generics,collections,c++-cli,Generics,Collections,C++ Cli,我正在用C++/CLI(VS2008)编写一个泛型类来存储和管理不同类型的记录,我需要在将它们刷新到DB/disk/等之前保存它们的集合。我的想法是这样的: ref class Record { // ... }; generic<typename T> where T : Record, gcnew() public ref class Factory { public: // ....functions.... protected: array<T

我正在用C++/CLI(VS2008)编写一个泛型类来存储和管理不同类型的记录,我需要在将它们刷新到DB/disk/等之前保存它们的集合。我的想法是这样的:

ref class Record
{
    // ...
};

generic<typename T>
where T : Record, gcnew()
public ref class Factory
{
public:
    // ....functions....
protected:
    array<T^> ^    StoredData;
};
Factory<Record>^ records = gcnew Factory<Record>();
ref类记录
{
// ...
};
通用的
其中T:Record,gcnew()
公共参考类工厂
{
公众:
//……功能。。。。
受保护的:
数组^存储数据;
};
这当然失败了,错误为C3229(不允许对泛型类型参数进行间接寻址)。如果删除“^”,则错误为C3149(如果没有顶级“^”,则无法在此处使用此类型)。这在VB.NET中很容易实现(实际上,我正在迁移一个现有的VB.NET类!),但是在C++中,我似乎已经走到了尽头。在C++/CLI中,这实际上是不可能的吗


提前感谢。

您需要做的是:

public ref class Record
{
};

generic<typename T>
where T : Record, gcnew()
public ref class Factory
{
public:
    // ....functions....
protected:
    array<T> ^    StoredData;
};

你说得太对了。我可以发誓我试过了,但显然我没有。:)非常好用,谢谢。
Factory<Record>^ records = gcnew Factory<Record>();
error C3225: generic type argument for 'T' cannot be 'Record', it must be a value type or a handle to a reference type