Boss-Worker モデル パターンを使用してコードを開発しています。私は疑問を持っています。ボスが追加するリストは、ボス クラスのメンバーです。Worker がアクセスできるように、Boss から Worker クラスを継承させています。
1) これはボスとワーカーの間でリストを共有する正しい方法ですか?
2) コードであいまいな継承に直面しています。どうすれば解決できますか?
スレッドクラス
#include <pthread.h>
class ThreadClass
{
public:
virtual int start();
virtual void join();
virtual void execute() = 0; //Each derived class will implement this
virtual ~ThreadClass() {}
ThreadClass() {}
private:
ThreadClass* Tptr;
};
ボス
#include "ThreadClass.h"
#include <list>
class Boss : public virtual ThreadClass
{
public:
virtual void execute();
Boss() {}
~Boss() {}
protected:
std::list<int> Mylist; //To be shared with the worker
};
ワーカー
#include "ThreadClass.h"
#include "Boss.h"
class Worker : public Boss, public ThreadClass //Getting error:Ambiguous ThreadClass
{
public:
virtual void execute();
Worker() {}
~Worker() {}
};
Worker は Boss & ThreadClass から継承しています。理由は次のとおりです。
1) ワーカーは Boss からリストにアクセスする必要があります
2) ワーカーは ThreadClass からのスレッド関数を必要とします