Linux Self Helpサイトからコピーしたスレッド クラスのわずかに変更されたバージョンを使用して、スレッド化基本クラスを作成しました。
class Thread
{
public:
static void *entry (void *pvArg) { Thread *pobjThread = static_cast<Thread *> (pvArg); pobjThread->run (); }
virtual void run (void) = 0;
};
私は2つのスレッドクラスを持っています:
class Item : public Thread
と
class Product : public Thread
class Item
関数のコンストラクターからスレッドを開始し、このクラスを pthread ライブラリに追加して、プログラムの実行中に後でそのスレッドを作成するwhileとして呼び出すスレッドentry
を作成します。this
pvArg
class Product
問題は、正常に動作することですclass Item
。run
関数が呼び出され、正しく処理されます。ただし、class Product
後で同じ関数を呼び出すと、次のようになります。
pure virtual method called
どちらのクラスも、メソッドをオーバーロードして同じ実装をしていますrun
が、一方が呼び出され、もう一方が呼び出されていません。
突然pure virtual method called
例外が発生するのはなぜですか?
ありがとう。
更新:
は cpp ファイルでa として宣言されており、1 つしかないためclass Item
、異なります。通常のオブジェクトのように使用されます。私が同じことをすると、うまくいきます。class Product
Item
static Item item;
class Product
class Product