인프런 커뮤니티 질문&답변

금도윤님의 프로필 이미지
금도윤

작성한 질문수

홍정모의 따라하며 배우는 C++

4.10 구조체 struct

질문드립니다.

작성

·

208

0

struct Family {

Person me, mom, dad{176.0, 80.0, 51, "Dad"};

};

Family member;

member.dad = {0.0, 0.0, 0, "dad"}; // possible

여기서 왜 member.dad{0.0, 0.0, 0, "dad"}; 와 member.dad(0.0, 0.0, 0, "dad");는 불가능한지 궁금합니다.

답변 3

2

int a(1) // direct initialization

int a{ 1 } // uniform initialization

direct initialization과 uniform initialization는 변수를 처음 선언하고 초기화 하는 과정에서 사용되는 "변수를 초기화 하는 방법" 인데,

위의 예시 대로라면

int a = 1;

a{ 3 } // ERROR!

a(3) // ERROR!

이런식으로 이미 초기화는 int a = 1; 로 끝마친 상태에서 또다시 initialization 을 시도하려고 해서 문법적인 오류가 발생한것처럼 보이네요.

Person dad {0.0, 0.0, 0, “dad”} // dad 를 초기화하면서 값 지정.

Family member;

member.dad {0.0, 0.0, 0, "dad"}; // 에러발생! member안에서 이미 dad 가 초기화되어있음. 그래서 값을 변경하려면 "=" 을 이용한 대입연산으로만 가능.

0

금도윤님의 프로필 이미지
금도윤
질문자

답변 감사드립니다. 이미 초기화를 했기에 초기화를 시도하려 해서 syntax error가 발생한 것이군요.

덕분에 궁금증을 해결하였습니다.

0

홍정모님의 프로필 이미지
홍정모
지식공유자

안녕하세요? 강의 어느 부분인지 분초를 적어주셔야 질문을 정확히 이해할 수 있습니다.

일단 struct안에서 member의 default value를 지정하고 싶으신 것 같은데, 좋은 질문입니다만, 정확하게 상황을 이해하시려면 뒤에 나오는 생성자 강의와 기본값 강의를 보시는 것이 좋습니다. C++에서 struct는 class를 이해하기 위한 중간단계로 생각하셔도 됩니다.

금도윤님의 프로필 이미지
금도윤

작성한 질문수

질문하기