ss(CLSID_MYOTHERCLASS);
spMyClass = spMyOtherClass; //set objVar = new MyOtherClass
spMyClass.DoSomething(); //objVar.DoSomething
_COM_SMARTPTR_TYPEDEF(MyClass, __uuidof(MyClass));
_COM_SMARTPTR_TYPEDEF(MyOtherClass, __uuidof(MyOtherClass));
MyClassPtr spMyClass = NULL; //dim objVar as MyClass
MyOtherClassPtr spMyOtherClass(CLSID_MYOTHERCLASS);
spMyClass = spMyOtherClass; //set objVar = new MyOtherClass
spMyClass.DoSomething(); //objVar.DoSomething
Äã»á·¢ÏÖ£¬Í¨¹ý_com_ptr_t²Ù×÷COM½Ó¿ÚµÄ·½·¨ºÍVBÖÐʹÓñäÁ¿²Ù×÷½Ó¿ÚµÄ·½Ê½¾ªÈ˵ÄÏàËÆ¡£ÐÎÈç¡°spMyClass = spMyOtherClass;¡±ÕâÑù²»Í¬ÀàÐͽӿڵIJéѯ²Ù×÷ÔÚVCÖÐͨ¹ý_com_ptr_t¶Ô¸³ÖµÔËËã·ûµÄÖØÔØ¶øÊµÏÖÁË¡£Èô²éѯ½Ó¿Úʧ°Ü£¬Í¬ÑùÊÇÅ׳öÒ»¸öÔËÐÐʱµÄÒì³£¡£
ÓÉÓÚVCȱÉÙ¶ÔCOM±ØÒªµÄÔËÐÐʱ¡¾8¡¿£¬_com_ptr_tµÄÉè¼ÆÕß¿ÉÄÜÔÚ½«COM¼¼ÊõÓÃÓÚVCÖ®ÖÐʱ£¬×öÁËÈçÏ¿¼ÂÇ£º
1.Èç¹ûVBÄܹ»¼æÈݵĶ«Î÷£¬VCÒ²ÒªÄÜʹÓá£Òò´Ë#importµÄ³öÏÖʹµÃVCͨ¹ý_com_ptr_t·½±ãµÄµ¼ÈëÀàÐͿ⡣
2.VB²ÉÓõĽӿڲéѯºÍʹÓ÷½Ê½VCÒ²Ó¦µ±¿ÉÒÔ²ÉÓá£Òò´Ë_com_ptr_tÖØÔØÁ˸³ÖµÔËËã·ûÀ´²éѯ½Ó¿Ú¡£ÖØÔضàÖÖ¹¹Ô캯ÊýÓÃÒÔÏñVBÄÇÑù´´½¨¶ÔÏó¡£
3.VBËù±íÏÖ³öÏÖÁ˵ÄÌØµãVCÒ²Ó¦µ±ÒÔÏàͬµÄ·½Ê½±íÏÖ³öÀ´¡£Òò´Ë½Ó¿Ú²éѯʱºò³öÏÖ´íÎó£¬_com_ptr_t»áÈçͬVBÒ»ÑùÅ׳öÒ»¸öÒì³£¡£
ËÆºõËü¾ÍÊÇΪÁËÄܹ»ÓëVB»òÕßDelphiÒÔÏàËÆµÄÓï·¨»ò»úÖÆÀ´²Ù×÷COM½Ó¿Ú¶ø´æÔڵġ£Òò´ËËûÔںܶàÇé¿öÏÂÓÐÎ¥C/C++µÄÔ¼¶¨£¨ÈçËü¿ÉÄÜ»áÔÚ¸³ÖµÔËËã·ûÖÐÅ׳öÒ»¸öÒì³££©¡£µ«ÕâÖÖÌØÐÔ¿ÉÒÔʹµÃ´úÂë¸ü¼ÓÈÝÒ×±»¸´Óã¬Ñ§Ï°ÖÇÄÜÖ¸ÕëµÄʱ¼äÒ²µÃÒâËõ¶Ì¡£
_com_ptr_tµÄ´æÔÚʹµÃ²»Í¬ÓïÑÔ²Ù×÷COM½Ó¿ÚµÄ·½Ê½µÃµ½ÁËͳһ¡£ËûµÄÉè¼Æ¸´ÔÓ£¬¹¦ÄÜÇ¿´ó¡£Ê¹µÃVC¿ÉÒÔÓëÆäËûÓïÑÔÒ»Ñù·½±ãµÄʹÓÃÀàÐͿ⡣µ±È»×·ÇóÕâÖÖͳһÐÔҲʹµÃËû±©Â¶³öÁËÏ൱¶àµÄÎÊÌ⣨ÈçÌõ¿î7ÖÐ×Ô¶¯½Ó¿Ú²éѯ´øÀ´µÄ·çÏÕ£©¡£
µ«²»¹ÜËüÈçºÎ£¬´ËʱÄãÖªµÀÁËËüµÄÉè¼ÆÒâͼ¡£Õâ»á°ïÖúÄãÀí½âÕâÌ×ÖÇÄÜÖ¸ÕëµÄÆäËûϸ½Ú¡£
×÷Õß¡°liuchang5µÄרÀ¸¡±