• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

다른 클래스에서 클래스 선언에 관한 질문이 있습니다.

23.08.24 21:47 작성 조회수 189

1

이렇게 main에서 생성자를 이용한 클래스를 쓸 때는 생성자가 파라미터 값을 가지면 선언 시에 해당 파라미터 값을 넣어줘야 에러가 발생하지 않습니다.

 

하지만 이와 같이 다른 클래스에서 생성자가 있는 클래스를 선언할 때는 오히려 파라미터 값을 넣어주게 되면 에러가 발생합니다. 이는 왜 이런 것인지 궁금합니다.

답변 1

답변을 작성해보세요.

1

Soobak님의 프로필

Soobak

2023.08.25

안녕하세요, 답변 도우미 Soobak 입니다.

클래스의 멤버는 일반적으로 클래스 생성자를 통해 초기화되어야 하기 때문입니다.

첨부해주신 사진의 클래스들을 바탕으로한 올바른 초기화 방법은 Something 클래스의 생성자에서 B 의 생성자를 호출하는 것입니다.

class B
{
  private:
    int b;
  public:
    B(const int& i) : b(i) { }
};

class Something {
  private:
    int i;
    double d;
    char c;
    int arr[5];
    B l;    // 여기서는 생성자를 호출하지 않습니다.
  public:
    Something() : b(12) { }  // Something 클래스의 생성자에서 B클래스의 생성자를 호출합니다.
};