2017-05-02 12 views
0

を使用して、私は次のようしているクラス:ベクトル<base_class*>とベクトル<sub_class*>

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

ご使用のプログラミング言語で質問にタグを付けてください。 – alfasin

+0

私はC++ langを使用しています –

+0

可能な複製[基本クラスポインタとして派生クラスポインタのベクトルが必要です](http://stackoverflow.com/questions/18223036/i-want-a-vector-of-derived- – mars

答えて

0

1つのタイプ(vector<Driver *>)を変換できない他のタイプ(vector<user *>)に渡そうとしているため、コンパイルエラーが発生しています。

find_userは正確に答えを出すのに十分な文脈がありませんが、これはコンパイルするでしょう。

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

または代わりに、おそらくあなたはメンバ変数として宣言していることを意図:

vector<user *> drivers; 

のいずれかが動作しますが、それはfind_userに依存します。

関連する問題