读书人

类函数名转成int解决方法

发布时间: 2012-04-12 15:46:35 作者: rapoo

类函数名转成int
请问,
class CTest
{
public:
void Fun()
{
int ps = (int)Fun;
}
};

这样编译器会报错,但是如果把函数写成static就不会,
class CTest
{
public:
static void Fun()
{
int ps = (int)Fun;
}
};

我大概猜到是类型转换不一样,但是具体原因是什么就不明白

[解决办法]
是因为非静态类成员函数不存在隐式指针转换,而静态成员函数的类型是普通函数类型,存在隐式指针转换。
[解决办法]

探讨

引用:
是因为非静态类成员函数不存在隐式指针转换,而静态成员函数的类型是普通函数类型,存在隐式指针转换。

补充一下,就算用&运算对成员函数做取地址操作,得到的成员函数指针依然是不可以转换成int类型的.

(int)&Test::fun;//erro

读书人网 >C++

热点推荐