エラー コード ( ErrCode
enum ) を返し、2 つの出力パラメーターを渡す関数を作成しました。しかし、関数の結果を出力すると、配列に正しい値が得られません。
// .. some codes here ..
ErrCode err;
short lstCnt;
short lstArr[] = {};
err = getTrimmedList(lstArr, &lstCnt);
// list returned array (for comparison)
for (int i=0; i<lstCnt; ++i)
printf("lstArr[%3d] = %d", i, lstArr[i]);
// .. some codes here ..
getTrimmedList
関数は次のようになります。
ErrCode getTrimmedList(short* vList, short* vCnt)
{
short cnt;
ErrCode err = foo.getListCount(FOO_TYPE_1, &cnt);
if (NoError!=err) return err;
short* list = new short [cnt];
short total = 0;
for (short i=0; i<cnt; ++i)
{
FooBar bar = foo.getEntryByIndex(FOO_TYPE_1, i);
if (bar.isDeleted) continue;
list[total] = i;
++total;
}
*vCnt = total;
//vList = (short*)realloc(index, sizeof(short)*total);
vList = (short*)malloc(sizeof(short)*total);
memcpy(vList, list, sizeof(short)*total)
// list returned array (for comparison)
for (int i=0; i<lstCnt; ++i)
printf("lstArr[%3d] = %d", i, lstArr[i]);
return NoError;
}
どこ:
foo
オブジェクトの配列を保持するFooBar
オブジェクトですfoo.getListCount()
タイプを持つオブジェクトの数を返しますFOO_TYPE_1
FOO_TYPE_1
取得/リストしたいオブジェクトのタイプですfoo.getEntryByIndex()
i
type のthFooBar
オブジェクトを返しますFOO_TYPE_1
bar.isDeleted
bar
が「削除済み」と見なされるかどうかを示すフラグです
私のエラーは何ですか?
編集:
すみません、間違った行をコピーしました。上でコメントして、正しい行を入れました。
編集 2
foo
とのリターンを制御することはできませんbar
。それらの関数の戻り値はすべてErrCode
、出力はパラメーターを介して渡されます。