Здравствуйте LA Jazz, Вы писали:
LJ>typedef struct
LJ>{
LJ> int e1;
LJ> int e2;
LJ>} sA;
LJ>Как лучше осуществить возвращение массива структур sA из ф-ии:
LJ>1.
LJ>LJ>void f(sA* pSA, int* count)
LJ>{
LJ> int nmbSA = 4;
LJ> ...
LJ> sA *pRes = new sA[nmbSA];
LJ> ... // do something with array
LJ> pSA = pRes;
LJ> *count = nmbSA;
LJ>}
LJ>main()
LJ>{
LJ> int nmbSA = 0;
LJ> sA *pSA = 0;
LJ> f(pSA, &nmbSA);
LJ> if(pSA)
LJ> delete pSA;
LJ>}
LJ>
LJ>2.
LJ>LJ>void f(sA* pSA, int count)
LJ>{
LJ> int nmbSA = 4;
LJ> ...
LJ> sA *pRes = new sA[nmbSA];
LJ> ... // do something with array
LJ> memcpy(pSA, pRes, sizeof(sA)*(__min(nmbSA, count))
LJ> delete pRes;
LJ>}
LJ>main()
LJ>{
LJ> int nmbSA = 4;
LJ> sA *pSA = new sA[nmbSA];
LJ> f(pSA, nmbSA);
LJ> delete pSA;
LJ>}
LJ>
А почему бы и не так:
sA* f(int count)
{
sA* pSA = new sA[count];
if (pSA){
...
// do something with array
...
return pSA;
}else
return NULL;
}
main()
{
int nmbSA = 4;
sA *pSA = f(nmbSA);
if (pSA)
delete pSA;
}