Ich habe eine Basisklasse und eine abgeleitete Klasse. Wenn ich versuche, den abgeleiteten Klassenzeiger in den Basisklassenzeiger zu konvertieren, erhalte ich einen Kompilierungsfehler.Wie repariert man 'kann Objekt vom Typ Base * mit einem Lvalue vom Typ value_type (aka Derived *) nicht initialisieren?
class Base {
..
}
class Derived: public Base {
}
class X {
public:
Base* getWriter(int shard) {
return writers[0][shard];
}
private:
mutable vector<vector<Derived*>> writers_;
}
Und die Fehler, die ich bekommen ist
error: cannot initialize return object of type 'Base *'
with an lvalue of type 'value_type' (aka 'Derived *') on line "return writers[0][shard];"
Sind diese 3 Klassen alle in einem Header oder verteilt in mehreren Headern? – 1201ProgramAlarm
Folgendes funktioniert für mich: 'struct Base {}; Struktur abgeleitet: öffentliche Basis {}; std :: vektor> schreiber; Base * getWriter (int shard) { \t Rücksprungschreiber [0] [shard]; } ' –
Alle Klassen sind in verschiedenen Headern verteilt. – user1159517