первый вопрос, поэтому, пожалуйста, прости мою наивность здесь.
Я углубляюсь в библиотеку триангуляции для c ++, которая сортирует массив указателей структуры перед запуском метода триангуляции.Я пытаюсь отслеживать один конкретный указатель структуры (XYZ) во всем приложении, который обновляется в соответствии с положением мыши.Проблема в том, что всякий раз, когда применяется метод qsort, этот указатель изменяется.Как определить или отследить этот указатель struct XYZ?
Вот структура и сортировка ...
struct XYZ{
double x, y, z;
};
int XYZCompare(const void *v1, const void *v2){
XYZ *p1, *p2;
p1 = (XYZ*)v1;
p2 = (XYZ*)v2;
if(p1->x < p2->x)
return(-1);
else if(p1->x > p2->x)
return(1);
else
return(0);
}
Массив структур XYZ (здесь 2 для тестирования) с помощью мышиссылка на указатель ...
XYZ *allPointers = new XYZ[100];
allPointers[0].x = 100;
allPointers[0].y = 200;
allPointers[0].z = 0;
allPointers[1].x = 50;
allPointers[1].y = 80;
allPointers[1].z = 0;
XYZ *mousePointer = &allPointers[0];
Сортировка и обновление методов мыши.
mousePointer->x = mouseX;
mousePointer->y = mouseY;
// If I don't qsort here the reference is fine, but I need to.
qsort(allPointers, 2, sizeof(XYZ), XYZCompare);
// triangulate, etc