³ö·¢µã£ºÖ®Ç°Å¼È»Åö¼ûÒ»¸öÐèҪʹÓÃ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"<
}
};
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"<
}
};
char xxx(void *com_on){
return ((C*)com_on)->_xxx();
}
int main(){
test x;
C hei;
x.a = xxx;
x.a(&hei);
return 0;
}
×÷Õß¡°ÌìʹµÄ°×¹Ç¡±