나는 기본 클래스가 있으며이 클래스에서 파생되는 클래스는 거의 없습니다. 기본 클래스에 복사 생성자를 작성하지 않았으므로 기본 생성자를 사용하고 있습니다.파생 클래스의 복사 생성자
그래서 나는이 코드를 작성하는 경우 :
base* b;
b = new base(*this)
잘 작동하지만, 내가 이런 걸 쓰는 경우 :
base* b;
b = new derive(*this)
을가 파생 클래스에서 나에게 일치하는 기능에 대한 오류를 제공을 .
파생 클래스 복사 생성자에 기본 클래스 'this
포인터를 전달하여 초기화 할 수 없습니까?
Andrew, Derived (const Base & base) {...}를 생성 해 주셔서 감사합니다. 먼저 기본 클래스 복사 생성자를 작성해야합니까? 사실, 당신이 제안한 파생 된 클래스 재정의 버전을 추가하려고했지만 기본 클래스에서 일치하는 함수를 불평하지 이제 : – Ruchi
@Ruchi : 기본 하나 충분하지 않습니다 - 예.하지만 기본 복사 생성자를 호출하는 것을 잊지 마세요. 파생 된 이니셜 라이저 목록 – Andrew
좋아, 내가 파생 된 파생에서 파생 된 :: derive (const base & b)하지만 오류가 발생합니다 : 오류 : 기본 호출 :: base(), 일치하는 함수를 기본 없음 :: base (const base & b)가 base :: base()를 호출하려고 시도하는 이유를 알 수 있습니다. – Ruchi