c ++类型转换

时间:2011-07-05 15:36:50

标签: c++

我在基于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 个答案:

答案 0 :(得分:1)

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

这样称呼:

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

答案 1 :(得分:0)

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

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

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