close

using namespace std ;

class Fred{
public:
    Fred (double d,int c):dx(d),cx(c){}
    int f(double d,int c){ dx = dx + d ; cx = cx + c ;return cx; }
    int g(double d,int c){ dx = dx + d ; cx = cx + c ;return cx; }
    int h(double d,int c){ dx = dx + d ; cx = cx + c ;return cx; }
    static int z(int c){ zx = zx + c ;return zx; }
private:
    double dx ;
    int    cx ;
    static int  zx  ;
} ;

int Fred::zx = 20 ;

typedef int (Fred::*MemFn)(double,int) ;


void  DoTesT(Fred& fobj,MemFn fn)
{
    int i = (fobj.*fn)(1,5) ;
    cout << i << endl ;
}

int main()
{
    Fred fobj(100.0,50) ;

    MemFn f1 = &Fred::f ;
    MemFn g1 = &Fred::g ;
    MemFn h1 = &Fred::h ;

    DoTesT(fobj,f1) ;
    DoTesT(fobj,g1) ;
    DoTesT(fobj,h1) ;

    int zint = Fred::z(123) ;
    cout << zint << endl ;
}

arrow
arrow
    全站熱搜

    hedgezzz 發表在 痞客邦 留言(0) 人氣()