2012-03-27 96 views
1

我想知道为什么我总是收到错误并无法返回数组;无法将'double(*)[5]'转换为'double'作为回报​​

此外,一旦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 

: ;

+0

Qauntity在您的代码中拼写错误。另外,我建议学习指针和数组。 – Corbin 2012-03-27 21:07:33

回答

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; 
} 
+0

C++确实允许返回一个指向数组的指针。也许这就是OP想要做的。当然,数组必须从堆中分配。 – 2012-03-27 21:11:39

+2

@TedHopp:的确如此。所以最好不要去那里! – 2012-03-27 21:11:59

1

因为你返回一个本地数组,它的内存在函数返回后不再有效,所以你的代码不会工作。您必须在堆上动态分配阵列的内存。

而且你有你的函数的返回类型更改为double **

0

您试图返回一个双阵列(二维),你不能在C++中。 改为使用Vector