这段话哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/24 10:40:22
struct A { void ( A::*pF )(); long a; void ABC(), BCD(); A(); };
void A::ABC() { a = 10; } void A::BCD() { a = 5; }
void ( A::*AVF[] )() = { A::ABC, A::BCD }; void A::A() { pF = AVF; }
这是教程上的,我没太读懂,主要是这里void ( A::*AVF[] )()
运行会出错,是编译器的问题吗?我用的是VC6.0

void ( A::*pF )();
这是函数指针的意思
可以简化成这样
void(*pF)()
pF 可以赋值为相应的函数原形
void ( A::*AVF[] )()
这是一个函数指针的数组

比如说有这么一个函数
void ABC()
这个函数与void(*pF)()指针相同。都是不接受任何值与不返回任何值的函数
所以可以这样操作
pF = ABC
这样pF这个指针就是代表着一个指向这个ABC的方法的指针。
而AVF是函数指针的数组的意思。可以接受任何不接受参数和不返回值的函数的一系列的函数
如果还是不明白加我百度HI我一步一步给你分析

我曾经回答过这么一个问题,你可以看看。关于取成员指针操作符.*的。
http://zhidao.baidu.com/question/104089094.html?si=1

void (A::*AVF[])()在struct A里面没有定义