假设有一个类有个线程调用函数,而类的线程调用函数必须是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