金源精密五金五轴:有关成员函数指针的问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/20 20:28:29
#include <iostream.h>

class Student
{
public:
int no,number;
char *name;
int deg1,deg2,deg3,x,y,z,counter,avg1,avg2,avg3;
static int sum1,sum2,sum3;

Student(){}
Student(char *name,int number,int x,int y,int z)
{
no=number;
deg1=x;
deg2=y;
deg3=z;
counter++;
}
~Student(){counter--;}

void sum()
{
sum1+=deg1;
sum2+=deg2;
sum3+=deg3;
}

void avg_1()//语文平均分
{
avg1=sum1/counter;
}

void avg_2()//数学平均分
{
avg2=sum2/counter;
}

void avg_3()//英语平均分
{
avg3=sum3/counter;
}

void disp()
{
cout<<"累计语文总分:"<<sum1<<endl;
cout<<"累计数学总分:"<<sum2<<endl;
cout<<"累计英语总分:"<<sum3<<endl;
cout<<"语文平均分:"<<avg1<<endl;
cout<<"数学平均分:"<<avg2<<endl;
cout<<"英语平均分:"<<avg3<<endl;
}
};

int Student::sum1=0,Student::sum2=0,Student::sum3=0;

int main()
{
Student a("XiaoMing",45,79,80,91),b("XiaoFang",30,90,79,88),c("XiaoDong",13,98,100,99);
a.sum();
b.sum();
c.sum();

Student *ptr=new Student();
void* (Student::*pF)() = Student::avg_1;
(ptr->*pF)();
delete ptr;

return 0;
}

这是个简单的程序 唯一的要求就是要用成员函数指针来调用球平均分的函数 可是我对成员函数指针的使用不是很了解 编译的时候出错了

错误提示:error C2440: 'initializing' : cannot convert from 'void (__thiscall Student::*)(void)' to 'void *(__thiscall Student::*)(void)'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

希望能帮我更正并简单的解释下成员函数指针 谢谢