24.01.15 06:31 작성
·
181
1
#include <iostream>
#include <string>
using namespace std;
struct Person
{
double height;
float weight;
int age;
string name;
void print()
{
cout << height << " " << weight << " " << age << " " << name;
cout << endl;
}
};
struct Family
{
Person me, mom, dad;
};
int main()
{
Family fm1;
Person fm1.me = { 2.0,100.0,20,"Jack Jack" };
fm1.me.age = 4.0;
fm1.me.print();
return 0;
}
여기에서
Person fm1.me = { 2.0,100.0,20,"Jack Jack" };
가 뜹니다. fm1 안에 정의된 me를 초기화하고 age만을 바꾸어서 출력하고 싶은데 어떻게 해야 되나요?
답변 1
1
안녕하세요, 답변 도우미 Soobak 입니다.
Family
구조체의 경우, Person
타입의 me
, mom
, dad
를 포함하고 있으므로, Family
인스턴스를 생성할 때 각 Person
객체를 {height, weight, age, name}
형태로 초기화할 수 있습니다.
다만, 질문자님께서 첨부하신 코드 중 Person fm1.me = {2.0, 100.0, 20, "Jack Jack"}
에 문법 오류가 있습니다.C++11
이후부터 도입된 {}
을 통한 유니폼 초기화 방법과 혼동하신 것 같습니다.
수정된 코드를 통한 예시를 첨부드립니다.
struct Person
{
double height;
float weight;
int age;
string name;
};
struct Family
{
Person me, mom, dad;
};
int main()
{
Family fm1 { // Family 인스턴스를 초기화하면서 각 멤버들을 초기화합니다.
{2.0, 100.0, 20, "Jack Jack"}, // me
{2.5, 150.0, 25, "Mom"}, // mom
{3.0, 200.0, 30, "Dad"} // dad
};
// 이 때, 질문자님의 의도처럼 me 의 age 값만 수정하려면 다음과 같이 작성하시면 됩니다.
fm1.me.age = 4;
return 0;
}
이해가 어려우신 부분이 있으시면 편하게 추가 댓글 남겨주세요.
2024. 01. 16. 05:01
이해가 되었습니다. 감사합니다!