假设有一个类有个线程调用函数,而类的线程调用函数必须是static的,但是为了让这个类的指针在调用这个函数时表现多态的行为,必须定义虚函数。那如何让静态的线程调用函数具有多态性的效果呢?将该指针以对象方式传入线程调用的静态函数即可。实现如下:
#include <iostream>
using namespace std;
class A
{
public:
static void Print(void *pA, const char *str)
{
A *pa = reinterpret_cast<A*>(pA);
pa->pPrint(str);
}
virtual void pPrint(const char *str)
{
cout << str <<endl;
}
};
class B : public A
{
public:
virtual void pPrint(const char *str)
{
cout << str << str <<endl;
}
};
void main()
{
A *a = new B;
a->Print(a,"http://blog.csdn.net/lonelyrains");
A::Print(a,"http://blog.csdn.net/lonelyrains");
}原文地址:http://blog.csdn.net/lonelyrains/article/details/45246427