c++类型转换

c++ type conversion

本文关键字:类型转换 c++      更新时间:2023-10-16

我有一个基于C代码的应用程序,如下所示:

void MyFunction(short count, double (*points)[2])

我用以下参数类型调用这个函数:

MyFunction(count, poly_pts);
short count
double *poly_pts

编译错误:

cannot convert parameter 2 from 'double *' to 'double (*)[2]'

我必须按照旧代码的相同方式传递。c代码不给出任何错误,但c++编译器给出。

有没有人有任何想法如何转换双指针到二维双指针?

函数需要一个指向2个double的数组的指针,你只给它一个指针。

这样写:

short count;
double points[2];
MyFunction(count, &points);

double (*points)[2]是指向包含两个元素的数组的指针。传递给函数的实际上只是一个指向double的指针。如果你想让调用工作,你必须有一个地址到一个数组的2双精度。像这样:

double array[2];
myFun(&array);   

将函数签名更改为double*(可能还有另一个类型为size_t的参数来表示大小)或将适当的值传递给原始函数。注意,数组的动态分配只返回一个指针,而不是一个真正的数组。