這是一個C而不是C++的問題,給出了這些限制。
返回數組的常用C模式實際上是讓調用者傳入一個數組來填充。這讓調用者決定分配(並因此取消分配)。
你的函數原型看起來像
int Function(string str1, string_ptr str2, int n, int* pOutArray, int cOutArray);
當函數返回書面pOutArray元素的數量。
在執行過程中,您將pOutArray設置爲NULL,在這種情況下,您只需計算元素的數量,然後返回該值。這使您可以根據您的需要調用函數中的幾種方法之一: -
int out[5]={0};
int cFilled = Function(s1,s2,x,out,_countof(out));
// Further code can use up to 5<cFilled elements from the array.
,或者
int cElt = Function(s1,s2,x,NULL,0);
int* pOut = malloc(sizeof(int)*cElt);
Function(s1,s2,x,pOut,cElt);
// pOut now contains exactly the number of elements extracted.
free(pOut);
爲什麼你認爲你不能使用的載體? – 2010-04-21 10:04:45
出於好奇,爲什麼不能使用'vector'? – 2010-04-21 10:04:58
因爲這是我選擇不使用矢量。 – Thomas 2010-04-21 10:06:36