由于array<double>是托管类型,因此您可以在此处使用托管跟踪引用,而不是普通引用。
void allocate(array<double>^% tmsr2)
{
tmsr2 = gcnew array<double>(100);
}
这是我的测试应用程序:
public ref class AsAClassField
{
public:
array<double>^ b;
AsAClassField()
{
allocate(b);
Debug::WriteLine("b = " + (b != nullptr ? "array" : "null"));
}
};
int main(array<System::String ^> ^args)
{
array<double>^ a = nullptr;
allocate(a);
Debug::WriteLine("a = " + (a != nullptr ? "array" : "null"));
AsAClassField^ foo = gcnew AsAClassField();
return 0;
}
输出:
a = 数组
b = 数组
当然,您可以随时切换 allocate 函数以返回新分配的数组,而不是将其作为参考。那将更多地采用托管风格。