0
, 나는이 기능을 만들고 싶어
반환 유형 B <T> 반면 원래 ()는 A을 반환합니다. 재정의 반환 형식은
나는이 시도하지만 컴파일러는 내가 추상 클래스 반환 할 수 없어 말하고있다 : 나는 A의에서 내가 A * 및 B <을 반환하지 않는 한이 T > * 수 없습니다 생각class A
{
public:
virtual A Clone() const = 0;
};
template <typename T>
class B : public A
{
private:
T value;
public:
B<T> Clone() const override
{
return B<T>(value);
}
};
을 Clone과 B 's Clone은 힙에 이것을 만들고 싶지 않습니다. 이것을 할 수있는 방법이 있습니까? (가능한 경우 모두에 복제본을 쓸 위치를 가리키는 포인터를 갖고 싶지 않습니다.)
참고 : 나는 생성자와 같은 "노이즈"중 일부를 제거했습니다.
* 그러나 힙에서 생성하고 싶지 않습니다. * 포인터는 힙과 아무 관계가 없습니다. – PaulMcKenzie
나는 그것을 이해하지만, B을 돌려주고 싶다. –
Matthew
A의 복제본에서 B을 반환하고 필드가없는 B 을 무시할 수 있습니까? –
Matthew