无法将'double(*)[5]'转换为'double'作为回报
问题描述:
我想知道为什么我总是收到错误并无法返回数组;无法将'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
: ;
答
你试图返回一个数组,你不能用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
答
因为你返回一个本地数组,它的内存在函数返回后不再有效,所以你的代码不会工作。您必须在堆上动态分配阵列的内存。
而且你有你的函数的返回类型更改为double **
Qauntity在您的代码中拼写错误。另外,我建议学习指针和数组。 – Corbin 2012-03-27 21:07:33