我面临的错误是编译器说cannot convert ‘double*’ to ‘double’ in assignment
。我的代码如下。
double* initArray(int data[], int dimensionCount){
//data: element 0= number of dimensions
//element 1 through inf define the size of each dimension
//dimensionCount keeps track of the current dimension being manipulated by the function
//Allocate dynamic memory for the current dimension
double* output;
output=new double[data[dimensionCount]];
int i=dimensionCount;
while(i<data[dimensionCount]){
if( !(output[i]= initArray(data, dimensionCount++))){
std::cout<< "Error! Out of Memory!";
break;
}
i++;
}
//returning the generated array tacks on the generated dimension to the lower dimension preceding it
return output;
}
由于output
类型为double*
而arrayInit
返回double*
类型的变量,我不知道它在何处尝试从{{1}转换到double
。我发现this,但它似乎不适用,因为double*
正确传递,data
正在返回指向正在生成的数组的指针,而不是数组本身,所以不应该与intArray
类型不匹配。
答案 0 :(得分:1)
我更多地使用该功能,并意识到虽然output
是double*
并且与initArray
返回的内容不冲突,但output[i]
只是一个常规{ {1}},因为它是double
指向的内容。尝试将output
设置为output[i]
时会导致类型不匹配。
要解决此问题,我修改了函数以返回double*
而不是double
,然后确保将double*
取消引用到新变量output
中。这允许函数返回正常数组,防止类型不匹配,并使函数的实际结果更加可用。
以下是代码:
array
答案 1 :(得分:0)
简单
return *output;
会做到这一点。使用另一个变量的任何特定原因?。