成员函数指针
c++中成员函数的指针:
class Math这段代码是没什么问题的,即使在 gcc-2.95.4上都能编译。
{
public:
double mul(int a, int b)
{
return a/(double)b;
}
};
int main(void)
{
typedef double(Math::*MFPointer)(int,int);
MFPointer mp=&Math::mul;
Math math;
(math.*mp)(3,277);
}
但是,如果想把成员变量指针放入STL的容器(比如vector)里,gcc-2.95.4就编不过去了,说是STL里面拿address的时候晕倒,没办法拿。想用void*
真是有够老土的。
相关文章
- [c++] 小心析构函数 - 07 22, 2010
- c++动态库链接错误 - 09 02, 2009
- fedora 9 小集 - 01 05, 2009
你好,根据你的例子的启发,其实可以先把成员变量赋值给一个函数指针,再用函数指针声明一个vector, 就可以用这个vector来保存类的成员变量了. 谢谢了.
--------------------------------------------
#include
#include
using namespace std;
class Math
{
private:
double offset;
public:
Math():offset(100.0){}
double mul(int a, int b)
{
return (a/(double)b + offset);
}
};
int main(void)
{
typedef double(Math::*MFPointer)(int,int);
MFPointer mp=&Math::mul;
Math math;
printf("%lf\n",(math.*mp)(500,5));
vector vec_fun;
vec_fun.push_back(mp);
--------
MFPointer test = *vec_fun.begin();
printf("%lf\n",(math.*test)(500,5));
return 0;
}
--------------------------------------------------------------------
user_00@ISD42_78_sles10:~/devin$ g++ test.cpp -o test
user_00@ISD42_78_sles10:~/devin$ ./test
200.000000
200.000000