Error: illegal use of this type as an expression. list in vc++

Error: illegal use of this type as an expression. list in vc++

我正在尝试制作一个需要使用 list.i 的项目,但它似乎无法正常工作。 以下是我的代码:

ref class MyClass2
{
    public:
        int x;
        String^ str;
}
List<MyClass2> lst =gcnew List<MyClass2>(); //here is the error

我在 visual studio 2008 年工作。

gcnewreturns一个引用。您不能只将它分配给一个对象。此外,您正在存储引用,而不是对象。因此,只需这样做:

List<MyClass2^>^ lst = gcnew List<MyClass2^>(); //note what I'm assigning to

同样,对于标准 new 你必须使用指针。

您需要这个(请注意 总共使用了三个 ^

List<MyClass2^>^ lst =gcnew List<MyClass2^>();

这是因为MyClass2是引用类型,只能和MyClass2^一起使用,和gcnew一起分配(和List一样)。

因此你有一个对 List 的引用,它可以包含对 MyClass2.

的引用

然后,添加项目:

MyClass2^ mc = gcnew MyClass2();
mc->x = 2; //Set values
lst->Add(mc);