Nico Heinze wrote:
> --- In [email protected], "Indika Bandara" <[EMAIL PROTECTED]>
> wrote:
>> man qsort
>> ==================================================
>>
>> void qsort(void *base, size_t nmemb, size_t size,
>> int(*compar)(const void *, const void *));
>>
>> DESCRIPTION
>> The qsort() function sorts an array with nmemb elements of size
>> size. The base argument points to the start of the array.
>>
>> The contents of the array are sorted in ascending order
>> according to a comparison function pointed to by compar, which is
>> called with two arguments
>> that point to the objects being compared.
>> ==================================================
>>
>> as man says, "sorts an array with nmemb elements of size size."
>> my array contains MAX_NUM of (P*)
>>>> P** p = new P*[MAX_NUM];
>> but if it were
>> int *i = new int[MAX_NUM]
>> and
>> qsort(i, MAX_NUM, sizeof(i), CompInt);
>> works
>>
>> am i doing something silly? can u pls try urself?
> <snip>
>
> I won't; I don't have the time. But even if I did have the time:
> frankly I don't understand C++ well enough to even judge whether
> qsort() can be used with objects this way. I have to leave the
> response to this question to other people like Victor, Paul, and many
> other ones. Sorry. I'm out of the game here.
>
> Regards,
> Nico
qsort() is C...
(sort() is C++ - the OP is mixing C and C++ though)
Anyway to answer the OP's question:
qsort(p, MAX_NUM, sizeof(P*), Comp);
Should be:
qsort(p, MAX_NUM, sizeof(P**), Comp);
(Although it probably won't affect anything).
Then this:
int Comp(const void* p1, const void* p2)
{
P* i1 = (P*)p1;
P* i2 = (P*)p2;
if(i1->_i>i2->_i)
return 1;
if(i1->_i<i2->_i)
return -1;
return 0;
}
Should be:
int Comp(const void *p1, const void *p2)
{
P *i1 = *((P **)p1);
P *i2 = *((P **)p2);
if(i1->_i>i2->_i)
return 1;
if(i1->_i<i2->_i)
return -1;
return 0;
}
However, since you are using C++, you should be using std::sort(),
FastSort() (from Safe C++ Design Principles - free e-book for group
members), or equivalent with an appropriate sort class in P that
overloads the () operator.
--
Thomas Hruska
CubicleSoft President
Ph: 517-803-4197
*NEW* MyTaskFocus 1.1
Get on task. Stay on task.
http://www.CubicleSoft.com/MyTaskFocus/