하위 개체를 할당하는 올바른 방법은 무엇입니까? 예를 들면 :하위 개체 할당
struct A {
int x = 2;
int y = 3;
};
struct B: A {
int z = 5;
};
int main() {
std::unique_ptr<B> bp{new B{}};
A a;
a.x = 12;
a.y = 13;
*(static_cast<A*>(bp.get())) = a; // happens to work, but is it the right way?
std::cout << bp->x << " " << bp->y << std::endl;
return 0;
}
이 작동 (또는 작동됩니까?)하지만, 어색하고 B
의 레이아웃에 대한 가정에 의존한다. 그래서 올바른 방법은 무엇입니까?
왜 그렇게 특이한가요? 또한 명시 적 캐스트가이 경우 작동하도록 보장됩니까? – AlwaysLearning
@AlwaysLearning : 왜 그런지 정확하게 말하기는 어렵지만 제 경험상 이례적인 것은 아닙니다. 일반적으로 상속을 사용하는 경우 개체 상태에 대한 추상화를 수행하려고합니다. –
@AlwaysLearning : x, y, z 멤버를 사용하면 직교 좌표를 모델링하려고한다고 생각합니다. 상속을 사용하면 3D 좌표가 올바른 모델이 아닌 2D 좌표임을 효과적으로 나타낼 수 있습니다. 어쩌면 그것은 의도가 아니었을 것입니다. –