편집 : baseObject
복사본 구성.
baseObject
에 대한 기본 생성자를 정의하지 않았으므로 컴파일러는 baseObject
생성자에 사용할 명시 적 사양이없는 derivedObject
을 생성 할 수 없습니다.
derivedConstructor
의 정의에서 정확히 baseObject
생성자를 지정해야합니다. 나는 당신의 baseObject
, 나는이 자리 아래 사용했습니다 어떻게 생겼는지 아무 생각이 없기 때문에 : 특정 경우
derivedObject(const baseObject &base, const std::string &extra1)
: baseObject(PARAM1, PARAM2)
{
baseparameter1 = base.baseparameter1;
baseparameter2 = base.baseparameter2;
extraparameter1 = extra1;
}
을, 이미 존재하는 baseObject
에서 derivedObject
을 만들려고하는 경우, 다음과 같이 baseObject
's이 (가) 생성자를 복사 할 정의해야합니다 : 당신이 {
에 도착하기 전에
derivedObject(const baseObject &base, const std::string &extra1)
: baseObject(base)
{
baseparameter1 = base.baseparameter1;
baseparameter2 = base.baseparameter2;
extraparameter1 = extra1;
}
클래스'baseObject'에는 기본 생성자가 없습니다. 우리는'baseObject'를 볼 수 있습니까? – Foggzie
맞습니다.하지만 왜 그 중 하나가 있어야합니다. 전달하는 기본 객체는 이미 생성되어 있어야합니다. – marcwho
파생 된 객체의 생성자는 자동으로 기본 클래스의 생성자를 호출합니다. 이것은'baseObject'가 전달되기 때문에 발생하는 것이 아니라'derivedObject' 자체 때문입니다. – Foggzie