2014-04-29 6 views
0

코드를 더 명확하게하고 싶었 기 때문에 많은 공간을 차지하고있는 배열을 선언 한 곳에서 여분의 cpp 파일을 만들었습니다.다른 파일에 배열을 선언하려고하면 cpp 오류가 발생합니다.

그러나 나는 그것이

error c2466: Assignment of an array of constant size can not be

말한다 내 코드를 컴파일하려고 (내가 독일어 번역, 그래서 당신이 오류 1by1를 모르면 궁금하지 않음) main.cpp

코드를 할 때마다

,691 :

#include "mapOne.cpp" 

그리고 코드 mapOne.cpp에서을 (파일을 포함하려면)

int point[100][100][2]; 
point [1][0][0] = 1; [...] 

나를 도와 줄 사람이 있습니까? 나는 하나의 배열을 선언했기 때문에 파일이> 400 라인을 넘는다면 ... 싫어.

+1

.h 파일로 선언하고 extern을 사용합니다. http://stackoverflow.com/questions/15841495/the-usage-of-extern-in-c – Omid

+0

은 함수의 초기화 코드입니까? – Bgie

+0

헤더 파일을 사용하면 다른 오류가 발생합니다. (extern을 추가하더라도) 오류 : '포인트'는 유형을 지정하지 않습니다. 함수 btw에 없습니다. – user3520616

답변

-1

함수가 사용할 수있는 영역에 배열을 선언하지 않았기 때문에 문제가 발생했습니다. 나는 다음과 같은 코드를 할 경우 예를 들어, : file2.cpp

#include "file1.cpp" 

int function1() 
{ 
    i = 1; 
    for (int x = 0; x<20; x++) 
    { 
    array[x] = i; 
    i = i + 2; 
    } 
} 

에서

int array[20]; 

file1.cpp에서를 배열 [X]가 인식되지 않을 것입니다. 그 이유는 인식하지 못하는 이유는 위에서 "include"코드를 사용하더라도 file1.cpp 파일에있는 기능 만 사용할 수 있기 때문입니다. 컴파일러가 file1.cpp 및 file2.cpp에서 선언 한 변수를 혼합하고 싶지 않기 때문에 함수가 아닌 변수 만 사용할 수있는 이유입니다. 이것은 더 간단하기 때문에 여러 번 같은 이름의 변수를 여러 파일에 선언 할 것이기 때문에 의미가 있습니다.

그러나 할 수있는 일은 헤더 파일에 배열을 선언하는 것입니다. 당신이 file2.cpp에서 함수를 작성하는 경우라고 file2.h를 헤더 파일을 만듭니다 file2.h에서

:

class file2 
{ 
    public: 
    int array[20];///or whichever type of array you want to declare 

} 

것이 중요하다 당신이 "대중 :"아래의 변수를 유지 섹션 file2.cpp에서 만든 모든 함수가 사용할 수 있습니다.

+0

당신이 제공 한 조언은 .cpp 파일을 포함하는 것보다 논쟁의 여지가없는 스타일이며 문제를 해결할 것입니다. 그러나 그 뒤에있는 추론은 잘못되었습니다. 전역 범위 *에서 선언 된 변수가 포함됩니다. 그래서 당신의 초기 예제는 컴파일되고 잘 돌아 간다. (당신이'i'를위한 타입을 포함하는 한) – Daan

+0

나는 그 뒤에있는 추론이 틀리다는데 동의하지 않는다. 나는 전역 범위에서 선언 된 변수가 포함될 것이라는 것을 알고 있지만 그것은 "또 다른 옵션"입니다. 다른 옵션이 있다는 사실은 "나의 선택"에 잘못된 추론을하지 않습니다. 내가 언급 한 모든 것은 사실 정확하고 대부분의 경우 조직적이고 선호되는 선택 방법이다. – computerWizard

+0

"배열 [x]가 인식되지 않을 것이라고 말한 부분을 의미했습니다." 및 "귀하는 기능을 사용할 수있는 기능 만 포함합니다." 귀하의 말은 이것이 컴파일러가하는 것이라고 제안합니다. 하지만 실제로 그렇지 않습니다. 이는 실제로 나머지 답변이 제안하는 방식대로 일을하는 경향이있는 이유 중 하나입니다. – Daan

0

배열이 허용되지 않는 배열에 값을 할당하려고합니다. 대신 컴파일러는 사용자가 새 배열을 선언하려고한다고 가정합니다.

함수에서 배정을 래핑하고 배열을 사용하기 전에 해당 함수를 호출하십시오.

관련 문제