2015-01-15 4 views
0

생성자를 사용하여 클래스 객체를 반환하는 함수를 구현하려고합니다. 그 클래스 개체는 매개 변수가있는 생성자로만 존재하며 기본 생성자가 필요하지 않습니다 (필요하지 않습니다). 내가 그 클래스 객체 반환하려고 - 그 오류가 온다 ..C++ 오류 : 모두에게 일치하는 함수가 없습니다.

Base.cpp

파생 자료 : 연산자 +() { 반환 (*이) 파생; // 문안에 대한 정합 기능 }

Base.h'를 유도하지 :: 유도 (유래)'

가상 유도 연산자 +();

Derived.h // 생성자 :

파생 (기본 & b);

유도 된 (유도 된 &d);

1. 오류를 수정하려면 어떻게해야합니까?

2. 선언 사이의 디퍼 런스 세라마이드가 (CONST가 &을 유도)과 뭐죠 (파생 &)?

감사

+0

연산자 +()의 목적은 무엇입니까? –

+0

Base는 파생 클래스를 어떻게 볼 수 있습니까? Derived는 Base에서 파생 된 것으로 가정합니다. – marcinj

답변

1

Derived& 임시 개체에 바인딩되지 않습니다. operator+은 임시를 반환합니다.

해결 방법 : 이 임시에 바인딩되므로 const을 추가하십시오.

+0

const를 두 생성자에 모두 추가 하시겠습니까? –

+0

const를 생성자에 추가하면 생성자의 멤버를 const로 변경해야합니다. 문제가 있다면, 구현할 필요가있는 대입 연산자로 해당 객체를 변경할 수 없다는 것입니다. –

+0

@michal_h : 아니요, 복사 생성자의 _source_ 객체에 const를 추가합니다. 복사 생성자 및 대입 연산자에서 _destination_ 개체의 멤버에만 쓰기 때문에 멤버에 영향을주지 않습니다. – MSalters

관련 문제