/ / Pomocou vektora <base_class *> a vektora <sub_class *> - c ++, dedičnosť

Pomocou vektora <base_class *> a vektora <sub_class *> - c ++, dedičnosť

Mám nasledujúce triedy:

class user
{
...
};

class System : public user
{
private:
vector<Driver*> drivers;
public:
bool find_user(string, string, vector<user*>);
};

class Driver : public user
{
....
};

ale pri použití

find_user(UN, "",drivers);

má chybu kompilátora, ktorá hovorí nepravidelný casting z vektora do vektora. Budem vďačný, ak mi pomôžete.

odpovede:

0 pre odpoveď č. 1

Dostanete chybu pri kompilácii, pretože sa pokúšate prejsť jedným typom (vector<Driver *>) na druh prašníka (vector<user *>), ktoré nie sú konvertibilné.

Nie je dosť kontextu, na čo find_user odpovedať rozhodne, ale to by to kompilovať.

template <typename T>
bool find_user(string, string, vector<T*>) { ... };

Alebo alternatívne, možno ste chceli mať členskú premennú deklarovanú ako:

vector<user *> drivers;

Buď by to fungovalo, ale záleží na tom find_user.