请指教象这样访问静态成员函数为什么不行?
可以通过强制转换访问结构/类中的成员变量.
用这种方法访问静态成员函数可以吗?
请看下面的演示程序:
#include <stdio.h>
class A;
typedef void (A::*fa)();
typedef void (*f)();
class A
{
public:
static void f0(){printf("f0\n");}
static void f1(){printf("f1\n");}
static void f2(){printf("f2\n");}
static void f3(){printf("f3\n");}
static void f4(){printf("f4\n");}
static void f5(){printf("f5\n");}
static f getpfn(int n);
};
f A::getpfn(int n)
{
return (f)(void*)((unsigned long)f0 + n * sizeof(fa));
}
void main()
{
A a;
/*
for(int i = 0; i < 5; i++)
{
f pfn = a.getpfn(i);
(*pfn)();
}
*/
#define P(n) printf("%ld\t", A::f##n); printf("%ld\n", a.getpfn(n));
P(0);
P(1);
P(2);
P(3);
P(4);
P(5);
printf("%ld\t", sizeof(fa)); printf ("%ld\n", sizeof(f));
}
感兴趣的朋友运行一下试试. 请指教为什么不行.
编译时还有一个警告,为什么? 谢谢。