작성
·
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
0
안녕하세요? 강의 어느 부분인지 분초를 적어주셔야 질문을 정확히 이해할 수 있습니다.
일단 struct안에서 member의 default value를 지정하고 싶으신 것 같은데, 좋은 질문입니다만, 정확하게 상황을 이해하시려면 뒤에 나오는 생성자 강의와 기본값 강의를 보시는 것이 좋습니다. C++에서 struct는 class를 이해하기 위한 중간단계로 생각하셔도 됩니다.