일부 데이터의 일반 파서 인 기본 클래스가 있고 파서에 포함 된 데이터에 대한 특정 액세스 인터페이스를 제공하는 여러 파생 클래스가 있습니다. 모든 데이터가 파싱 된 후에 만 파생 클래스의 유형을 결정할 수 있습니다. 이는 파생 클래스가 계층 구조에 따라 다르므로 (각 기본에 대해 파생 클래스를 결정하기 위해 완전히 채워 져야하는 기본 클래스 트리가 있음)기본 클래스 개체에서 파생 클래스 만들기
불필요한 데이터 복사를 피하면서 기본 클래스에서 파생 클래스를 만드는 가장 좋은 방법은 무엇입니까? 지금, 나는 (아래로) 기반의 파생 사용하여 복사 생성자를 만드는거야 :
class Base
{
};
class Derived : public Base
{
Derived(const Base &base)
: Base(base)
{
}
};
을하지만,이 더 필요하지 않습니다 모든 기본 데이터 복사가 필요합니다 - 복사하지 않고 파생 될 수있는 내가 원하는 기본 클래스를하고 가능한 경우 삭제합니다.
EDIT : 파생 클래스 HTE 저장된 실제 데이터의 종류에 따라 특정 액세스 인터페이스를 제공하면서
자료 파서는 일반적> 맵으로 데이터 파일을 저장하고 데이터를 파싱한다. 파생 클래스가 변경 될 수 있으며 더 많이 추가 될 수 있습니다.
아마도'Base'에게 이동 생성자를 줄 수 있고'Derived '도'Base &&'에서 생성 가능하게 만들 수 있습니다. – aschepler
기본에서 파생 된 * 내용을 * 이동해야합니까? – Asha
'Base'와 'Derived'같은 소리가 [Single Responsibility의 원칙]을 위반 함 (http://en.wikipedia.org/wiki/Single_responsibility_principle) –