2017-11-28 18 views
-1
void merge(vector<Flight>& data, int low, int high, int mid, string criteria) 
{ 
int i, j, k, temp[high - low + 1]; 
... 

오류는 "매개 변수"high "(선 100에 선언 됨)의 값을 상수로 사용할 수 없습니다."라는 오류가 발생합니다. 나는 온라인으로이 질문에 대한 적절한 답을 찾지 못했다.매개 변수의 값을 상수로 사용할 수 없습니다.

+0

선언에서 배열 길이로 '하이'를 사용하려고합니다. 컴파일러가 알려주 듯이, 그것은 불가능합니다. – user0042

답변

1

high - low + 1은 C++에서 의 컴파일 시간 평가 가능한 상수 표현이되어야합니다. (C++은 가변 길이 배열을 지원하지 않습니다.)

그리고 컴파일러는 진단을 내립니다.

간단한 해결책은 temp의 유형으로 std::vector<int>을 사용하는 것입니다.

+0

은 다음과 같습니다 : '벡터 * 임시 = 새 벡터 [높음 - 낮음 +1]; '? – grizloni97

+0

거의 그렇지만 포인터 유형을 삭제하십시오. 필요가 없습니다. – Bathsheba

+0

포인터 유형을 삭제하면 "std :: vector > *"에서 " "으로 변환 할 수있는 적절한 생성자가 없습니다. std :: vector > "". – grizloni97