我有一个类,我试图实现作为一个抽象类来最大限度地重用代码。然而,两个派生类之间的共同点的主要部分在于每个类都有消费者和生产者线程。我想知道是否可以让每个静态成员函数调用一个虚拟成员函数来完成所有的基础工作。具有虚拟工作者函数的C++继承和线程
基本上,下面的代码是允许的还是我做的事情超级哈克,或者会让编译器大叫/尖叫着我?
// in AbstractClass.h
class AbstractClass {
// some code here including constructors/destructors
protected:
virtual int Worker() = 0; // derived class provides implementation
private:
static void* Thread(void* args);
};
// in AbstractClass.cpp
static void* AbstractClass::Thread(void* args) {
AbstractClass myobject = static_cast<AbstractClass*>(args);
myobject->Worker();
}
基本上我想知道派生类“工人”是否会被称为这种方式?请注意,通过传递Thread()函数来调用p_thread_create()。
感谢您的帮助,因为我尝试提高对继承和虚函数的理解,以及如何使用它来最大化代码重用。
编译器不会叫喊,它会看到静态转换并假设你知道你在做什么。考虑使用更安全的C++ 11线程。 –
@ n.m。我到了那里,我保证!我想暂时使用p_threads,因为我想深入了解潜在的魔法。 –