2014-10-12 2 views
-5

я пытаюсь сделать что-то вроде QSort, но я всегда получаю ошибку, когда я пытаюсь использовать с void*недействительным указатель арифметика в QSort

void my_sort(void* base, size_t num, size_t size, int(*compare)(const void*, const void*)) 
{ 
    size_t i, j; 
    const void *first, *second; 
    for (size_t i = 0; i < num*size; i+=size) 
    { 
     for (size_t j = size +i; j < num*size; j +=size) 
     { 
      first = base + i; 
      second = base + j; 
      if (compare(first,second)<0) 
      { 
       swap(base,i,j); 

      } 
     } 
    } 
} 
+3

C или C++? Вы не должны писать ничего подобного на C++. –

+0

Вы получаете сообщение об ошибке, когда используете указатель void где? Какая ошибка? на каком языке вы используете? Пожалуйста, добавьте более подробную информацию в следующий раз. – Cubia

ответ

2
first = ((char*) base) + i; 
second = ((char*)base) + j; 
Смежные вопросы