私は基本クラスと派生クラスを持っています。派生クラスポインタを基本クラスポインタに変換しようとすると、コンパイルエラーが発生します。修正する方法 'value_type型(別名Derived *)の左辺値を持つBase型の戻りオブジェクトを初期化できませんか?
class Base {
..
}
class Derived: public Base {
}
class X {
public:
Base* getWriter(int shard) {
return writers[0][shard];
}
private:
mutable vector<vector<Derived*>> writers_;
}
そして、私が手にエラーが種類のベースと派生関係がコンパイラに知られていない場合に、このエラーが発生し
error: cannot initialize return object of type 'Base *'
with an lvalue of type 'value_type' (aka 'Derived *') on line "return writers[0][shard];"
これらの3つのクラスは、すべて1つのヘッダーにありますか、複数のヘッダーに広がっていますか? – 1201ProgramAlarm
以下は私のために働く: 'struct Base {}; 構造体が派生した:public Base {}; std :: vector>ライター。 ベース* getWriter(intシャード){ \t return writers [0] [シャード]; } ' –
すべてのクラスは異なるヘッダーに広がっています。 – user1159517