想编写qsort函数的原理,现在遇到了下面的报错

如何用c++语言写qsort函数原理呢
#include
using namespace std;

int cmpint(const void *a,const void *b){
return *(int *)a- *(int *)b ;
}

int cmpchar(const void *a,const void *b){
return *(char *)a- *(char *)b ;
}

void mysort(void p1,int num,int length,int(p2)(const void,const void)){
for(int i=0;i<num-1;i++){
void temp=p1[i];
p2(p1[i],p1[i+1])>0?p1[i+1]=p1[i],p1[i]=temp:p1[i]=temp;
}
}

int main ()
{ int a[10] = {0, 5, 12, 3, 4 ,1,7,6,9,8 };
mysort(a, 10, sizeof(int) , cmpint);
for (int i = 0; i <10; i++)
{ cout<<a[i]<<" ";
}
cout<<endl;

char b[7] = {'e', 'g', 'a', 'f', 'b', 'd','c'    };
mysort(b, 7, sizeof(char) ,  cmpchar);
for (int i = 0; i <7; i++)
{  cout<<b[i]<<" ";
}
return 0;

}

img


#include <iostream>
using namespace std;
void mysort(int p[],int num)
{
    for(int j=0; j<num-1; j++)
    {
        for(int i=0; i<num-1-j; i++)
        {
            if(p[i]>p[i+1])
            {
                int tem=p[i];
                p[i]=p[i+1];
                p[i+1]=tem;
            }
        }
    }
}
void mysort2(char p[],int num)
{
    for(int j=0; j<num-1; j++)
    {
        for(int i=0; i<num-1-j; i++)
        {
            if(p[i]>p[i+1])
            {
                int tem=p[i];
                p[i]=p[i+1];
                p[i+1]=tem;
            }
        }
    }
}
int main ()
{
    int a[10] = {0, 5, 12, 3, 4,1,7,6,9,8 };
    mysort(a, 10);
    for (int i = 0; i <10; i++)
    {   cout<<a[i]<<" ";
    }
    cout<<endl;

    char b[7] = {'e', 'g', 'a', 'f', 'b', 'd','c' };
    mysort2(b, 7);
    for (int i = 0; i <7; i++)
    {   
    cout<<b[i]<<" ";

    }
    return 0;

}