P********e 发帖数: 2610 | 1 机子空闲的人可以试试
这样:
class A
{
virtual void f1(){};
.
.
.
virtual void f129(){}
};
void (*A::fp)() = &A::f129();
A a;
(a.*fp)(); |
t****t 发帖数: 6806 | 2 你写个编译都不可能过的东西叫别人试试?
【在 P********e 的大作中提到】 : 机子空闲的人可以试试 : 这样: : class A : { : virtual void f1(){}; : . : . : . : virtual void f129(){} : };
|
h****g 发帖数: 71 | 3 No this problem on G++4.4. I guess it may appear on MSVC.
struct A
{
virtual void f1(){};
virtual void f2(){};
virtual void f3(){};
virtual void f4(){};
virtual void f5(){};
virtual void f6(){};
virtual void f7(){};
virtual void f8(){};
virtual void f9(){};
virtual void f10(){};
virtual void f11(){};
virtual void f12(){};
virtual void f13(){};
virtual void f14(){};
virtual void f15(){};
virtual void f16(){};
virtual void f17(){} |
P********e 发帖数: 2610 | 4 you are right.
i am asking is because that initially
void (A::*funp)() = &A::f2;
int i = (int) funp;
print i;// i = 2;
they changed this design later.
【在 h****g 的大作中提到】 : No this problem on G++4.4. I guess it may appear on MSVC. : struct A : { : virtual void f1(){}; : virtual void f2(){}; : virtual void f3(){}; : virtual void f4(){}; : virtual void f5(){}; : virtual void f6(){}; : virtual void f7(){};
|
t****t 发帖数: 6806 | 5 ...人都贴了可以编译过的版本了, 你随手又给改成不能编译的了
【在 P********e 的大作中提到】 : you are right. : i am asking is because that initially : void (A::*funp)() = &A::f2; : int i = (int) funp; : print i;// i = 2; : they changed this design later.
|
c**r 发帖数: 108 | 6 MSVC 10.0 is fine with this.
【在 h****g 的大作中提到】 : No this problem on G++4.4. I guess it may appear on MSVC. : struct A : { : virtual void f1(){}; : virtual void f2(){}; : virtual void f3(){}; : virtual void f4(){}; : virtual void f5(){}; : virtual void f6(){}; : virtual void f7(){};
|