我想要一个包含多个独立变量的 vector 。在我的 C++ header(.h) 中,我这样定义它:
private:
// Static data structure holding independent variables
static vector<double>* indVariables;
在我的 .cpp 文件中,它的定义相同,然后我将不得不在其他一些函数中使用这个 vector ,如下所示:
static vector<double>* indVariables;
void fun(int m, int n)
{
for (i = 0; i < m; ++i)
{
ai = indVariables[i];
temp = exp(-n * (ai - 8.0));
}
} /* fun */
现在在 C# 中,我想将一组数字复制到此 vector 并将其调回 C++,如下所示:
var matu = new double[]{ 8.0, 8.0, 10.0, 10.0, 10.0, 10.0};
myCppClass.indVariables = matu;
我该怎么做?
第一个问题是因为它是私有(private)的,我在 C# 中看不到它。我必须公开还是有其他方法?然后如何为这个 vector 赋值?
最佳答案
它是私有(private)的这一事实确实存在一个问题,但是,我认为将其公开不仅可以解决您的问题。正如 Richard 所说,C# 不知道 std::vector 是什么。我不太了解您的代码结构、代码的作用、使用方式等,但是,如果您只需要将数字列表/数组分配给 vector ,则可以使用 List<>在您的 C# 代码中,并将 vector 的赋值包装在您的 CLI 项目/文件中,如下所示:
void Assign(Collections::Generic::List<double>^ l )
{
IndVariables->clear();
for each (double i in l)
{
IndVariables->push_back(i);
}
}
然后在您的 C# 程序中,您将编写(或者您已经声明了您的 List<>):
yourCppClass.Assign(new List<double>(){0.0, 42.0, 8.0});
您还可以添加额外的包装方法来操作或访问 vector 。同样,这可能适合也可能不适合,具体取决于您的代码结构。
关于c# - 从 C# 调用托管 C++ 中的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36182651/