//Base.h
Class Base {
//...
public:
virtual std::ostream& display(std::ostream& os) const =0;
}
//Derived1.h
Class Derived1 : Base {
//...
public:
std::ostream& display(std::ostream&) const;//defined in Derived1.cpp
}
//Derived2.h
Class Derived2 : Derived1{
//...
public:
void display(std::ostream&) const;//error here!!!!!!!!!!!!!!!!!!!!
}
void 표시 (std :: ostream &) const를 사용해야합니다. 그것은 내 연구실의 지시에 있고 그것을 바꿀 수 없기 때문입니다. 간단하고 이해할 수있는 derived2의 표시 함수에서 Derived1의 표시 함수를 호출해야합니다. 그래서이동일한 이름이지만 다른 반환 유형의 파생 클래스에서 새 함수 만들기
void Derived2::display(std::ostream& os) const{
Derived1::display(os);
}
처럼이 Derived2의 오류는이
Derived2 A;
A.display(std::cout);
같은 주에 호출됩니다 "반환 유형은 동일하지 않으며 반환 형식과 공변"표준 : : ostream에 & "의 재정의 된 가상 함수 "
함수의 서명 (이 경우 반환 유형)이 재정의되는 함수와 일치해야하기 때문에 읽은 바 있지만 제 연구실에서 새 함수를 작성하려고합니다. ,하지만 같은 이름으로? 왜냐하면 나는 Derived2에서 display()의 Derived1에서 display()를 호출해야하기 때문입니다. 이견있는 사람?
오, 내가 뭘 하려는지 display() 오버 라이딩, 오른쪽 무시하지 않는 것으로 간주됩니다?