类型不匹配

时间:2016-04-28 00:32:02

标签: c++ pointers types

我面临的错误是编译器说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类型不匹配。

2 个答案:

答案 0 :(得分:1)

我更多地使用该功能,并意识到虽然outputdouble*并且与initArray返回的内容不冲突,但output[i]只是一个常规{ {1}},因为它是double指向的内容。尝试将output设置为output[i]时会导致类型不匹配。

要解决此问题,我修改了函数以返回double*而不是double,然后确保将double*取消引用到新变量output中。这允许函数返回正常数组,防止类型不匹配,并使函数的实际结果更加可用。

以下是代码:

array

答案 1 :(得分:0)

简单

return *output;

会做到这一点。使用另一个变量的任何特定原因?。