这将是一个非常愚蠢的问题,但是在C++/CLI中有可能做到以下几点吗?
// C++/CLI
public ref class Managed
{
public:
array<double>^ m_data;
Managed(array<double>^% data) : m_data(data)
{
}
void bar(int x)
{
System::Array::Resize(m_data, x);
}
};
// C#
static void Main(string[] args)
{
double [] d = new double[10];
Foo.Managed f = new Foo.Managed(d);
f.bar(5);
}
这样,
之后
从main、main::d和f.m_调用f.bar(5)数据是相同的“重新分配”数组?我试过使用未管理的引用、指针、pin-ptr等等,但是什么都没有。有什么想法吗?如果这是不可能的,有什么原因吗?
使用引用跟踪操作符(%)我可以这样做,如果我想在构造函数中调整大小,这就是它让我一直在尝试的方法。
在C++中使用引用是可能的,不幸的是,我不知道如何将数组^转换成数组^ &;我也不能使用数组^ %作为成员:
class Foo{
public:
double *& m_data;
Foo(double*& data): m_data(data)
{
}
void bar(int x)
{
delete m_data;
m_data = new double[x];
}
~Foo(){
delete [] m_data;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
double* data = new double[10];
Foo f(data);
std::cout << &data << "\n" << &f.m_data << "\n";
f.bar(5);
std::cout << &data << "\n" << &f.m_data;
getchar();
return 0;
}