读书人

怎么第一个函数指针 ?

发布时间: 2012-12-31 11:57:51 作者: rapoo

如何第一个函数指针 ??
我现在想定义一个函数指针,可以指向两个类的成员函数
比如说
class AAA
{
AAA();
int get_max(int a,int b);
};

class BBB
{
BBB();
int get_max(int a,int b);
};

typedef int(*func_max)(int a,int b)

//函数指针变量
func_max my_max_func;

我知道上面定义有问题 我想问的是如何顶一个通用的函数指针 可以指向任何类
上面红色部分如何定义??

[解决办法]
class Base
{
virtual int get_max(int a,int b) =0;
};
class Derived_1:public Base
{};
class Derive_2:public Base
{};
利用虚函数来实现多态而非函数指针,不知道这样能不能解决lz的问题

[解决办法]


刚写的,不知道是否符合你的要求
class Farther;

typedef int(Farther::*FUNC)(int a);

class Farther
{
public:
Farther(){};
~Farther(){};
public:
int func(int a){printf("%s","调用F");return 0;};
protected:
};
class A : public Farther
{
public:
A(){};
~A(){};
int func(int a){printf("%s","调用A");return 0;} // 如果要调用子类中的func 请写成虚函数
};
class B : public Farther
{
public:
B(){};
~B(){};
int func(int a){printf("%s","调用B");return 0;}
};
int main()
{
FUNC p;
p = &Farther::func;
Farther f;
(f.*p)(3);
/**Farther *f = new A();
(f->*p)(3);*/
system("pause");
}

[解决办法]


BBB b;
int (BBB::*func)(int,int) = BBB::get_max;
(b.*func)(1,2);
//同样的方式可以应用到类AAA

读书人网 >C++

热点推荐