【发布时间】:2020-03-26 09:54:21
【问题描述】:
我是 C++/CLI 包装器到 C# 的新手,我在将数组传递给 C# 时遇到了一些问题。
原生 c++
const double *NDimInversion::GetOutputAverage() const
{
if ( mOutputOk )
return mAvgY.data().begin();
else
throw runtime_error("Error in NDimInversion::GetOutputAverage(): output not available.");
}
本机标头
const double *GetOutputAverage() const;
包装头
public ref class NDimInversion
public:
array<double>^ GetOutputAverage();
包装器 c++
array<double>^ NDimInversion::GetOutputAverage() {
array<double> tempArr = nDimInversion->GetOutputAverage(); // ????
const int SIZE = tempArr.size();
array<double>^ tempReturn = gcnew array<double>(SIZE);
for (int i = 0; i < SIZE; i++)
{
tempReturn[i] = tempArr[i];
}
return tempReturn
};
我打算将本机返回转换为 CLI 数组,但我无法传递该数组。
你能指出我错过了什么吗?
我还需要在 CLI 中携带“const”关键字吗?
【问题讨论】:
-
原生函数不会告诉你数组有多大。该信息应该来自哪里并不明显,当然不是来自 size()。重写本机函数以返回
std::vector<double>,您将有机会使其工作。