2014-10-21 4 views
-4

나는 내가 내 주요 CPP 파일에 (하지 텍스트 파일에서 헤더 파일에서)이 입력을 읽을 수 xyz.cpp헤더 파일에서 입력을 읽는 방법?

내가 말, 이제

//abc.h 
unsigned int *get(void) 
{ 
    static unsigned int input[] = 
    { 
     1, 
     2, 2, 
     4, 5, 
     6, 7 
    }; 
return input; 
} 

abc.h 헤더 파일이 배열을 사용하여 이러한 요소에 액세스하려고 생각하지만 작동하지 않을 것입니다.

int arr[6]; 
arr=get(); 

첫 번째 요소는 테스트 케이스의 수, n은 제 2 및 제 3 요소는 2-D 어레이 요소의 나머지의 사이즈 나 입력 값에 필요한 2-D array.So의 값은 다음이다 2D 배열 arr [행] [열]에 대한 n, 행, 열 및 값의 값

어떻게하면이 효과를 얻을 수 있습니까?

편집 : 나는 진지하게 왜이 질문이 내려지고 있는지 알 수 없습니다. 이것은 좋은 구현이 아니라는 것에 동의하지만 입력 헤더 파일을 받았고이 헤더 파일을 통해서만 데이터를 읽을 수 있습니다 !!

+3

헤더 파일에 기능 구현을 넣지 마십시오 SO 자체에 대한 좋은 해답이 있습니다. –

+0

동의합니다. 그러나이 외부 입력 파일을 받았고이 파일을 통해 입력을 읽을 수있는 유일한 방법은 – techriften

+0

배열을 사용하는 이유는 무엇입니까? 이러한 정수가 의미가있는 경우 클래스를 작성하는 것이 좋습니다. – user657267

답변

3

이 파일로 프로그램을 컴파일 할 수 있다면 을 읽을 필요가 없습니다.을 읽으십시오. 이 값이 배열은 당신을 programm로 컴파일 될 것입니다 그리고 당신은 바로 이곳에 액세스 할 수 있습니다

처럼 xyz.cpp 파일이 보일 것입니다 : 또한

#include "abc.h" // given abc file located in the same directory 

int main(){ 
    unsigned int * myArrayPtr = get(); 
    // here comes some processing and, if you want, reading values from this array; 
    unsigned int numberOfCases = myArrayPtr[0]; 

    unsigned int * dimensionsArrayPtr = myArrayPtr + 1; 
    unsigned int xArraySize = dimensionsArrayPtr[0]; 
    unsigned int yArraySize = dimensionsArrayPtr[1]; 

    // and etc. 
    // Most interesting part to represent those values as two dimensional array 
    // I left to you :)  
    return 0; 
} 

, 당신은이 트릭은 작동 할 수 있음을 remeber한다 헤더 파일의 배열이 static으로 선언 되었기 때문입니다. 어쨌든 programm에는 정의되지 않은 동작이 있습니다.

하나 더. 함수 본문이 헤더 파일에 정의되어 있으면 인라인으로 선언해야합니다. 이 헤더가 하나의 cpp 파일에만 포함되어있는 한 그게 전부입니다. 그러나 더 많은 코드 파일에 포함될 경우 이 이미 정의되어 링커 오류가 발생합니다.

cpp에서 포인터에 대해 더 자세히 배우는 것이 좋습니다. 이 문서에서는 정적 키워드에 대한 충분한 http://www.cplusplus.com/doc/tutorial/pointers/

괜찮 - 완전이 예제를 이해하기 - The static keyword and its various uses in C++

+0

감사합니다 !!! 이것은 내가보고 있었던 것이다. downvoting 대신에, 사람들은이 질문에 적극적으로 대답 할 수있었습니다. 어쨌든, 고마워 :) – techriften

+0

이 질문은, 당신이 실제로 당신 자신에 의해 대답을 찾으려고 노력하지 않았다는 것을 보여줍니다. 필자가 제공 한 링크는 "C++ 포인터", "C++ 정적"이라는 쿼리를 통해 Google에서 거의 첫 번째 결과입니다. 그것이 당신의 질문을 하향 투표로 만들었습니다. 어쨌든, 내 대답은 유용합니다 바란다 :) –

관련 문제