我有一个稍微修改过的线程类版本,它是从我用来创建线程基类的Linux 自助站点上复制的:
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 库以创建线程调用entry
,this
因为pvArg
whileclass Product
稍后在程序执行期间创建它的线程。
现在的事情是,class Item
工作正常。该run
函数被调用并正确处理。但是,当class Product
稍后调用相同的函数时,我得到:
pure virtual method called
两个类都具有相同的实现,都重载了run
方法,但是一个被调用而另一个未被调用。
为什么我会突然得到一个pure virtual method called
例外?
谢谢。
更新:
class Item
是不同的,class Product
因为在 cpp 文件中Item
被声明为 astatic Item item;
并且只有一个。class Product
像普通对象一样使用。如果我对它做同样的事情,class Product
它就可以正常工作。