我有一个类,我正在尝试将其作为抽象类来实现,以最大限度地重用代码。但是,两个派生类之间的主要共同点在于每个派生类都有一个消费者和生产者线程。我想知道是否可以让每个静态成员函数调用一个虚拟成员函数来完成所有底层工作。
基本上,是否允许以下代码,或者我是否在做一些超级hacky,或者编译器会对我大喊大叫/尖叫?
// 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();
}
基本上我想知道派生类“worker”是否会被这样调用?请注意,通过传入 Thread() 函数调用 p_thread_create()。
感谢您的帮助,因为我试图提高对继承和虚函数的理解,以及如何使用它来最大化代码重用。