/ / Використання вектора <base_class *> та вектора <sub_class *> - c ++, успадкування

Використовуючи вектор <base_class *> і вектор <sub_class *> - c ++, успадкування

У мене є наступні класи:

class user
{
...
};

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

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

але при використанні

find_user(UN, "",drivers);

у ньому є помилка компілятора, яка говорить про неправильне відтворення від вектора до вектора. Я буду вдячний, якщо ти мені допоможеш.

Відповіді:

0 для відповіді № 1

Ви отримуєте помилку компіляції, оскільки ви намагаєтеся передати один тип (vector<Driver *>) типу пилу (vector<user *>) які не конвертовані.

Існує недостатньо контексту для чого find_user дійсно, щоб відповісти однозначно, але це дозволило б скласти.

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

Або, можливо, ви мали намір вказати змінну члена як:

vector<user *> drivers;

Або працювало б, але це залежить від цього find_user.