0

TJob と Reload_Job の 2 つのクラスを取得しました。Reload_Job は TJob から拡張されています。

class reload_job: public TJob 

私は機能を得ました:

void run_all_threads(std::vector<TJob*> &jobs){...}

そして呼び出し:

std::vector<reload_job*> jobs;
thread_pool->run_all_threads(jobs); //error: No matching function

A はその呼び出しでエラーを受け取りました。ただし、関数の形式を次のように変更した場合:

void run_all_threads(TJob* job)

そして呼び出し:

reload_job* job;
thread_pool->run_all_threads(job); it work

Tjob ポインターのベクトルの場合になぜコンパイル エラーが発生したのかを説明していただけませんか。本当にありがとう!

4

3 に答える 3

0

同様の種類のクラス スケルトンを作成しましたが、問題はありませんでした。クラスの実装について詳しく教えてください。

class TJob { public: TJob() { }

};

クラス reload_job: public TJob

{

public: reload_job() {

}

void run_all_threads(std::vector &jobs) {

} };

intメイン(){

std::vector<TJob*>vec;
vec.push_back(new reload_job());

reload_job rj;
rj.run_all_threads(vec);

0 を返します。

}

于 2013-04-09T03:28:10.827 に答える