0
구조체하기 : 문제가 다른 곳이기 때문에C++ 정렬 배열은 내가 기능을 분류 한
void countingSort(TPhone * const * array, int count) {
// some code
// making copy od array
TPhone * const * arrayCopy = new TPhone * [count];
for(int i = 0; i < count; i++) {
arrayCopy[i] = array[i];
}
for(int i = 0; i < count; i++) {
int index = // some function to determine where to place array[i]
array[index] = arrayCopy[i];
}
}
은 내가 정렬 알고리즘에 대한 세부 정보를 ommited. 문제는 arrayCopy
신고 문제입니다.
는
arrayCopy[i] = array[i]
...
array[index] = arrayCopy[i];
이 오류 메시지가
error: assignment of read-only location ‘*(arrayCopy + ((sizetype)(((long unsigned int)i) * 8ul)))’
error: assignment of read-only location ‘*(array + ((sizetype)(((long unsigned int)index) * 8ul)))’
이 선언에 const
사용에 문제를이 있어야 얻을하지만 난 그것을 해결하는 방법을 모른다
왜 const를 사용하고 있습니까? 상수로 선언 할 때 컴파일러에 수정하려고하지 않는다고 알려줍니다. –
아마도 매개 변수의 형식 선언을 복사했습니다. 'TPhone * const *'를'TPhone *'(또는'auto')로 변경하십시오. –
@RedAlert 귀하의 요지를 이해하지 못합니다. 포인터 배열 * in *은 확실히 포인터와 const가 될 수 있습니다. 그것들은 여기에서 수정되어서는 안된다. 해당 포인터가 가리키는 내용이 아닌 포인터 배열 * content *가 변경됩니다. 그래서 OP 컴파일러에게 "이것은 포인터 - 투 - const 객체의 수정 가능한 포인터 배열입니다. 합리적인 것보다 더 많이 보인다. 그들은 잘못하고있다.하지만 아이디어는 확실하다. – WhozCraig