2012-03-27 150 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

相關問題