Arrays C++ CLR数组
众所周知,数组的声明非常简单Arrays C++ CLR数组,arrays,c++-cli,clr,Arrays,C++ Cli,Clr,众所周知,数组的声明非常简单 type name[size]; < >但是,当我把C++编译成CLI/WiFrm时,它就不起作用了,我已经找到了解释这个新的SyToX的OnDon MSDN,但是对于一些理由,我仍然会有奇怪的错误。 当我以下面的方式声明数组时,它的编译没有问题,但是当数组被操纵时,程序就会崩溃。我用一个按钮在一个简单的程序上测试了它,仍然是一样的 array<int>^ aiArray; //declaration - no problem aiArray[0] =
type name[size];
< >但是,当我把C++编译成CLI/WiFrm时,它就不起作用了,我已经找到了解释这个新的SyToX的OnDon MSDN,但是对于一些理由,我仍然会有奇怪的错误。
当我以下面的方式声明数组时,它的编译没有问题,但是当数组被操纵时,程序就会崩溃。我用一个按钮在一个简单的程序上测试了它,仍然是一样的
array<int>^ aiArray; //declaration - no problem
aiArray[0] = 5; //after executing it the program crash
您需要创建数组,而不仅仅是声明局部变量。试试这个:
array<int>^ aiArray;
aiArray = gcnew array<int>(10);
aiArray[0] = 5;
如果您熟悉C,这应该看起来很熟悉。如果你熟悉C++而不是C,下面就是这样的:你所拥有的与iT*AIAL相当;在非托管C++中。您需要执行aiArray=newint[10];然后才能使用非托管阵列 您需要创建数组,而不仅仅是声明局部变量。试试这个:
array<int>^ aiArray;
aiArray = gcnew array<int>(10);
aiArray[0] = 5;
如果您熟悉C,这应该看起来很熟悉。如果你熟悉C++而不是C,下面就是这样的:你所拥有的与iT*AIAL相当;在非托管C++中。您需要执行aiArray=newint[10];然后才能使用非托管阵列 冒着声明显而易见的风险,您需要一个数组实例,而不仅仅是一个变量声明。请看,我还没有验证,但您可能可以使用数组aiArraysize;声明变量;。^字符表示托管引用,本质上是指向.NET对象的指针。因此,有问题的代码大致相当于int*aiArray;aiArray[0]=5;冒着声明显而易见的风险,您需要一个数组实例,而不仅仅是一个变量声明。请看,我还没有验证,但您可能可以使用数组aiArraysize;声明变量;。^字符表示托管引用,本质上是指向.NET对象的指针。因此,有问题的代码大致相当于int*aiArray;aiArray[0]=5;