将C++中涉及数组的函数调用转换为C#时出现问题
Trouble with converting function calls involving arrays in C++ to C#
我需要将以下C++代码转换为C#。我不知道给我的是哪个C++版本。我使用了Tangible Software的转换器,将C++的方法一个接一个地转换为C#。这个Multiply1x3
方法是从两个地方调用的,如下所示,在转换成C#后给我带来了一些麻烦。你能告诉我哪里出了问题吗?
void Conversions::Multiply1x3(double matr[3], double matr3[3][3], double result[3])
{
int i;
for (i = 0; i < 3; i++)
{
result[i] = matr[0] * matr3[0][i] + matr[1] * matr3[1][i] + matr[2] * matr3[2][i];
}
}
void Conversions::SomeMethod2(double matr1[3][3], double matr2[3][3], double result[3][3])
{
double tempArray[3];
for (i = 0; i < 3; i++)
{
Multiply1x3(tempArray, matr2, result[i]);
}
}
void Conversions::SomeMethod2()
{
double matr[3][3];
double source[3];
double NewX[3];
Multiply1x3(source, matr, NewX);
}
转换后我得到以下C#代码:
public partial class Conversions
{
public void Multiply1x3(double[] matr, double[,] matr3, double[] result)
{
int i;
for (i = 0; i < 3; i++)
{
result[i] = matr[0] * matr3[0, i] + matr[1] * matr3[1, i] + matr[2] * matr3[2, i];
}
}
public void SomeMethod2(double[,] matr1, double[,] matr2, double[,] result)
{
double[] tempArray = new double[3];
for (i = 0; i < 3; i++)
{
Multiply1x3(tempArray, matr2, result[i]); // ERROR
}
}
public void SomeMethod2()
{
double[,] matr = new double[3, 3];
double[] source = new double[3];
double[] NewX = new double[3];
Multiply1x3(source, matr, NewX);
}
}
编译这个C#代码会给我以下错误,所有3个错误都来自同一行:
Argument 3: cannot convert from 'double' to 'double[]'
Wrong number of indices inside []; expected 2
The best overloaded method match for 'Project.Conversions.Multiply1x3(double[], double[*,*], double[])' has some invalid arguments
问题是C#不支持访问多维数组的切片;即,从二维数组result
中,您正试图通过result[i]
获得对第i行的引用,但C#根本不支持此操作。一种解决方法是使用交错数组类型double[][]
来代替多维数组类型double[,]
。
Multiply1x3
采用double[]
:
(..., double[,] matr3, double[] result)
// ^^^^^^^^^^^^^^^
但您传递了一个double
,因为result[i]
返回了一个double。
相关文章:
- C++转换参数初始化问题
- 将父类对象强制转换为子类的问题
- 模板类转换问题 - 无法推断调用的函数
- 将旧管道转换为现代 openGL 时出现问题
- 将字节数组转换为带有字节序问题的指针
- 复制构造函数隐式转换问题
- 使用转换器提升 Python 问题 - 静态链接
- 与模板 (c++) 相关的转换问题
- 将文件复制到自定义位置,存在字符串转换问题
- 从基指针到派生的强制转换问题
- JNI 日期值转换问题,在C++中获取不同的长整型值
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- PX 转换例程编译问题
- 类型转换问题
- C++,遇到将双精度转换为整数的问题
- 拆分 pybind11 模块和自动类型转换问题
- 类型转换问题:返回为整数而不是浮点/类型
- Unicode 字符问题/转换参数
- c++和OpenCV:问题转换图像到灰度