无法将'double(*)[5]'转换为'double'作为回报

时间:2012-03-27 21:06:05

标签: c++

我想知道为什么我一直收到错误并且无法返回数组;

另外,一旦sell_item函数实际工作并返回一个数组,我就会从主函数回显该数组。

感谢

#include <iostream>
#include <fstream>

using namespace std;

ifstream infile;
ofstream outfile;

int itemnum = 3333;
string itemName="Cooking Range";
int Qauntity=1;

int NumberOfItems=2;
int NumberOfFields=5;

double function_Sell_Item(int   itemnum,string itemName, int Qauntity);

int main () {
    function_Sell_Item(itemnum, itemName, Qauntity);
}

double function_Sell_Item(int   itemnum,string itemName, int Qauntity) {
    double arraylist[2][5];

    for (int index =0; index < NumberOfItems; index++) {
        for (int i=0; i < NumberOfFields; i++) {
            arraylist[index][i]=0;
        }
    }

    return arraylist;
}
//// functions ends

: ;

3 个答案:

答案 0 :(得分:8)

您正在尝试返回一个在C ++中无法执行的数组。

你应该考虑像std::vector<double>这样的东西,因为你可以回复它。

typedef std::vector<double> MyVec;

MyVec foo() {
    MyVec v;
    v.push_back(3.142);
    v.push_back(2.718);
    return v;
}

int main() {
    MyVec z = foo();
    for (int i = 0; i < z.size(); i++) {
        std::cout << z[i] << "\n";
    }

    return 0;
}

答案 1 :(得分:1)

当你返回一个本地数组时,你的代码根本不起作用,在返回函数后,它的内存不再有效。您必须在堆上动态分配数组内存。

此外,您必须将函数的返回类型更改为double **

答案 2 :(得分:0)

你试图返回一个你不能在C ++中使用的双数组(二维)。 请改用Vector