我创建了一个函数,返回一个错误代码(ErrCode
枚举)并传递两个输出参数。但是当我打印函数的结果时,我没有在数组中得到正确的值。作为输出参数在c + +
// .. 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()
返回一个类型FOO_TYPE_1
bar.isDeleted
的i
日FooBar
对象如果bar
被视为“已删除”或不
我的错误是什么?
编辑:
对不起,我抄错了线。我在上面评论它,并把正确的路线。
编辑2
我没有过的foo
和bar
回报控制。它们的所有函数返回值都是ErrCode
,输出通过参数传递。
这不是C++代码,也就是C代码。对于C++,您应该使用['std :: vector'](http://en.cppreference.com/w/cpp/container/vector)。 –
和'int main'。 – chris