객체배열 (동적/정적)초기화


class Test
{
public :
    Test( int a, int b );
};

위 클래스 처럼 생성자를 통해 매개변수를 주고 싶은 클래스가 있다고 할 때.

Test test( 1, 2 ); 
위 와 같이 값을 넣어주면 문제가 없지만 
만약 이 클래스를 배열을 만들거나 동적할당을 하고 싶을 때 문제가 생긴다.

Test test[10];                                    //에러 발생, 디폴드 생성자 없음
Test test[2] = { Test( 1, 1 ), Test( 2, 2 ) };  //가능
Test* test = new Test[10];                    //에러 발생, 디폴드 생성자 없음

해결하기 위해 아래와 같이 기본 생성자를 만들었다고 했을 때
class Test
{
public :
    Test();
    Test( int a, int b );
};
Test* test = new Test[10];    
10개의 객체가 만들어지긴 하지만 Test( int a, int b ) 를 호출 못했기 때문에
따로 함수를 만들거나 해서 배열 수 만큼 초기화를 시켜 주어야한다.
for( int i = 0; i < 10; ++i )
{
    test[i].Initialize( 10, 10 );
}

댓글

이 블로그의 인기 게시물

(의역) Separating Axis Theorem(SAT) 설명

Simple Intersection Tests For Games (의역)