ʹÓô¿Cº¯ÊýÖ¸Õëµ÷ÓÃC++µÄÀà³ÉÔ±º¯Êý

2014-11-24 12:50:40 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 0

³ö·¢µã£ºÖ®Ç°Å¼È»Åö¼ûÒ»¸öÐèҪʹÓÃC´úÂëµ÷ÓÃC++µÄ³ÉÔ±º¯ÊýµÄ³¡¾°£¬µ±Ê±ÔÚgoogleÉÏûÓÐÕÒµ½½â¾ö·½°¸£¬ÓÚÊǼǼÏÂÁËÕâ¸öÐèÇ󣬽ñÌì¿´ÁËGECKOµÄNPAPI´úÂ룬ÕÒµ½Ò»ÖÖ·½Ê½

Ô­Àí£ºÀàµÄstatic³ÉÔ±ÊÇ×÷Ϊ¹²ÏíµÄ·½Ê½±»·¢²¼¸øÍâ²ãµÄ£¬ËùÒÔ²»¾ßÓгÉÔ±º¯ÊýµØÖ·£¬ËùÒÔËü¿ÉÒÔÓÃÀ´ÎªÎÒÃÇתÍäµÄµ÷ÓÃÀàµÄ³ÉÔ±º¯ÊýÌṩһ¸ö»ú»á¡£
ÔÚstatic³ÉÔ±º¯ÊýÖд«µÝÀà±¾ÉíµÄÖ¸Õ룬¾Í¿ÉÒÔÔÚÄÚ²¿µ÷ÓÃÕâ¸öÖ¸ÕëµÄ¾ßÌ嶯×÷¡£

Õâ½â¾öÁËCµÄº¯ÊýÖ¸Õë²»Äܵ÷ÓÃC++µÄÀà³ÉÔ±º¯ÊýµÄÀ§ÈÅ¡£


ÒÔÏÂÊÇÒ»¸öʵÀý£º

#include

class C;

struct test{
char (*a)(C *);
};

class C{
public:
static char xxx(C *com_on){
return com_on->_xxx();
}
char _xxx(){
std::cout<<"hei! _xxx called"< return 'a';
}
};

int main(){
test x;
C hei;
x.a = hei.xxx;
x.a(&hei);
return 0;
}

µÚ¶þÖÖÊÇʹÓÃÓÑÔªº¯Êý£¬¾ßÌåÔ­Àí¿´´ýÂðÒ²¾ÍÃ÷°×ÁË,ÉÏÃæµÄ´úÂëÍü¼Ç¸Ä³Évoid*ÀàÐ͵ģ¬ÎÒÏëÄúÄÜ¿´µÃ¶®£¬Èç¹û²»Ã÷°×£¬ÏÂÃæÕâ¸öÓ¦¸Ã×ãÒÔ˵Çå³þ


#include

class C;

struct test{
char (*a)(void *);
};
char xxx(void*);

class C{
public:
friend char xxx(void *com_on);
char _xxx(){
std::cout<<"hei! _xxx called"< return 'a';
}
};
char xxx(void *com_on){
return ((C*)com_on)->_xxx();
}
int main(){
test x;
C hei;
x.a = xxx;
x.a(&hei);
return 0;
}

×÷Õß¡°ÌìʹµÄ°×¹Ç¡±