.h
파일 하나와 여러 개의 .cpp
파일을 가진 프로젝트가 있습니다. 헤더 파일에는 현재 정렬을 구현하는 UF
(u seful f에 대한 약어) 네임 스페이스가 포함되어 있습니다.qsort를 구현하기 위해 전역 변수를 사용하지 않는 방법이 있습니까
int compar_int_asc(const void *a, const void *b)
{
int aa = *((int *)a), bb = *((int *)b);
if (base_arr_int[aa] < base_arr_int[bb])
return -1;
if (base_arr_int[aa] == base_arr_int[bb])
return 0;
if (base_arr_int[aa] > base_arr_int[bb])
return 1;
}
현재, 필요로하는 염기 배열 base_arr_int
가 qsort
의해 액세스 될 상기 비교기 기능은 상기 main.cpp
선언하고 UF.cpp
에 externed된다
이
따라서UF.cpp
정의하는 비교기를 구비하여 이루어진다 .
다른 클래스의 qsort
에 액세스하려면 SEP
다음과 같이하십시오. 첫째, SEP.cpp
에서 나는 extern base_arr_int
입니다. 그런 다음 ratios[100]
이 네이티브이고 SEP
에 로컬 인 정수 배열 인 경우 SEP.cpp
에서 다음을 수행합니다.
base_arr_int = ratios;
qsort(indices, 100, sizeof(int), UF::compar_int_asc);
여러 클래스로 qsort를 구현하는 가장 좋은 방법입니까?
특히, 나는 가능한 한 많이 main.cpp
에 정의 된 전역 변수를 사용하지 않는 것이 좋습니다. 대안 디자인이 있습니까?
당신이'표준을 고려 하시겠습니까 :: 'qsort' 대신'sort'를 사용합니까? –
@NickyC 예, main.cpp의 전역 변수를 피하면 도움이됩니다. 또한,'ratios' 배열 자체를 정렬하지는 않지만'ratios [indices [0] '는 가장 작은 요소이고'ratios [indices [1]]'는 가장 작기 때문에'indices'를 정렬합니다. 에. 'std :: sort'는 그 기능에 도움이됩니까? – Tryer