#include "stdafx.h"
#include<iostream.h>
class CA{  // enum{YY=100};
//static int x;
int ii;
void (CA::*ProX)(int);
public:
CA(int i=0):ii(i*i){};void Pro1(int) const;
void pro4(const void (CA::*p)(int));
};
void CA::pro4(const void(CA::*p)(int))
{
(this->*p)(ii);
}
void CA::Pro1( int x) const
{
cout<<"pro1 :"<<"ii:"<<ii<<"  i: "<<x<<endl;
  
}
typedef const void (CA::*HEHE)(int);//这里定义类型
void main()
{
CA  ca2;
ca2.Pro1(5);
ca2.Pro1(10);
ca2.pro4((HEHE)ca2.Pro1);//转换一把}

解决方案 »

  1.   

    错误找到了。#include<iostream.h>
    class CA{  //    enum{YY=100};
        //static int x;
        int ii;
        void (CA::*ProX)(int);
    public:
        CA(int i=0):ii(i*i){};    void Pro1(int) const;
        void pro4( void (CA::*p)(int) const);//<==========here
    };
    void CA::pro4( void(CA::*p)(int) const)  //<==========here
    {
        (this->*p)(ii);
    }
    void CA::Pro1( int x) const
    {
        cout<<"pro1 :"<<"ii:"<<ii<<"  i: "<<x<<endl;
      
    }void main()
    {
    CA  ca2;
    ca2.Pro1(5);
    ca2.Pro1(10);
    ca2.pro4(ca2.Pro1);}