2010. 4. 3. 04:46

동적 배열을 다른 클래스에서 사용하려면..?


다음 예제를 살펴 봅시다.
-------------------------------------------------------------

class AAA
 

AAA::TestA()
{
    // 문자열 2차원 배열 선언
    char(* strResult)[15] = new char[500][15];
}

 

class BBB


#include "AAA.h"

AAA testa;  -> testa class 변수 선언

BBB::TestB()

{

    while( ... )
    {
        printf( "%s", testa.strResult[i] );  // 에러
    }

}

-------------------------------------------------------------

위의 예제에서 처럼 클래스 AAA에 선언된 배열 strResult를 어떻게 가져올 수 있을까요?

class AAA에서 다음과 같은 접근 제어 함수를 만들 수 있습니다.
 

"AAA.h" 

class AAA
{

public:

    char (*GetStrResult())[15];    // 2차원 배열 포인터를 리턴

}

"AAA.cpp"

// 클래스 AAA의 멤버인 2차원 배열 포인터를 아래와 같이 리턴할 수 있습니다.
char (*AAA::GetStrResult())[15]
{

    char (*strResult)[15] = new char[500][15]; 

    return strResult;

}

 

"BBB.cpp"

BBB::TestB()
{

    char (*ptr)[15] = NULL;

    while( ... )
    {

        ptr = testa.GetStrResult();


        printf( "%s", ptr + x );    // x는 출력할 문자열의 인덱스

    }

}

Written By Sim-Hyeon, Choe