class A {
public:
virtual A* Clone() const {
return new A(*this);
}
};
class B : public A {
public:
A* Clone() const override {
return new B(*this);
}
};
이걸 포인터 안쓰고 똑같이 구현할 수 있는 방법 있음?
std::vector<A>로 B, 그 외 A를 상속하는 클래스 객체를 담고싶은데 유니크 포인터까지 쓰니까 너무 장황해 std::vector<std::unique_ptr<A>> 이렇게 담게 돼버리니 ㅠ
CRTP도 안쓰고 포인터도 안쓰고 구현 가능한 방법 있냐?
public:
virtual A* Clone() const {
return new A(*this);
}
};
class B : public A {
public:
A* Clone() const override {
return new B(*this);
}
};
이걸 포인터 안쓰고 똑같이 구현할 수 있는 방법 있음?
std::vector<A>로 B, 그 외 A를 상속하는 클래스 객체를 담고싶은데 유니크 포인터까지 쓰니까 너무 장황해 std::vector<std::unique_ptr<A>> 이렇게 담게 돼버리니 ㅠ
CRTP도 안쓰고 포인터도 안쓰고 구현 가능한 방법 있냐?
파생된 클래스를 한 벡터에 담고싶은거면 귀찮아도 std::vector〈std::unique_ptr〈BaseClass〉〉 해야지