//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 display(std :: ostream &)constを使用する必要があります。それは私の研究室の指示にあり、変更できないからです。 私は、derived2の表示関数でDerived1の表示関数を呼び出す必要があります。これは簡単でわかります。したがって、この同じ名前で異なる戻り値の型を持つ派生クラスの新しい関数を作成する
void Derived2::display(std::ostream& os) const{
Derived1::display(os);
}
ようですがDerived2に誤りがあるこの
Derived2 A;
A.display(std::cout);
のようなメインに呼び出される「戻り値の型は同一ではないにも戻り値の型との共変 『のstd :: ostreamに&』の関数のシグネチャ(この場合は戻り値の型)がオーバーライドされている関数と一致する必要がありますが、私の研究室では、それを上書きしない新しい関数を作成したいと思うと思います、しかし同じ名前で?私はDerived2のdisplay()のDerived1からdisplay()を呼び出さなければならないからです。何かご意見は?
私はdisplay()で何をしようとしていますが、オーバーライドされていると見なされます。