/ / vector <base_class *>およびvector <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);

ベクトルからベクトルへの不規則なキャストを示すコンパイラエラーがあります。 あなたが私を助けてくれたら感謝します。

回答:

回答№1は0

1つの型を渡そうとしているため、コンパイルエラーが発生しています(vector<Driver *>)ther型(vector<user *>)変換可能ではありません。

何についての十分な文脈がない find_user 間違いなく答えますが、これはそれをコンパイルするでしょう。

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

または、代わりに、メンバー変数を次のように宣言するつもりでした。

vector<user *> drivers;

どちらでも機能しますが、それは find_user.