33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int aa(int a)
{
printf("%d",a);
return a;
}
int main1()
{
int (*pa)(int) = &aa;
pa(5);
}
int main2()
{
int (*pa)(int) = aa;
pa(5);
}
#include <iostream>
using namespace std;
class Widget
{
public:
#if 1
Widget()
{
pa[0] = &f;
pa[1] = &g;
pa[2] = &i;
pa[3] = &j;
}
#endif
void select(int idx)
{
//类内的函数指针只记录函数的偏移量
(this->*pa[idx])();
}
private:
void f() {cout <<"void f()" << endl;}
void g() {cout <<"void g()" << endl;}
void i() {cout <<"void i()" << endl;}
void j() {cout <<"void j()" << endl;}
enum {cnt = 4};//const int 4;不行
void (Widget::*pa[cnt])() = {f,g,i,j};
};
int main()
{
Widget w;
w.select(2);
return 0;
}
这段代码中 if 到endif中间这一段去了有影响吗
void (Widget::*pa[cnt])() = {f,g,i,j};//这行改成 void (Widget::*pa[cnt])() = {&f,&g,&i,&j};可以吗