使用vector <base_class *>和vector <sub_class *>

时间:2017-05-02 16:47:35

标签: c++ inheritance

我有以下课程:

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 :(得分:0)

您收到编译错误,因为您尝试将一种类型(vector<Driver *>)传递给不可转换的花药类型(vector<user *>)。

没有足够的背景信息find_user肯定会回答什么,但这会得到它的编译。

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

或者,也许您的意思是将成员变量声明为:

vector<user *> drivers;

要么工作,要取决于find_user