只有父类指向子类的指针
现在我需要操作子类新增的函数
有什么方法能把这个父类指针强制转化为子类指针么?知道子类的类型名
我知道可以在父类加虚函数。但我不想这样。我想强转,但vs似乎会报错……
ããç¶ç±»æéæ æ³ç´æ¥è°ç¨åç±»çæ°å½æ°ï¼éè¦è½¬æ¢ä¸ºåç±»çæéåæ¹å¯è°ç¨ã
ããC++ç¼è¯å¨å¨ç¼è¯çæ¶åæ¯åéæç±»ååæãä¹å°±æ¯è¯´ï¼ä½ çç¶ç±»æéæ¯å¦ççæåä¸ä¸ªå类类åï¼ç¼è¯å¨å¹¶ä¸ä¼åè¿ä¸ªå设ãæä»¥ä½ ç¨ç¶ç±»æéå»è°ç¨åç±»çå½æ°æ¯æ æ³è¢«è¯å«çãè¿éæä¾ä¸ç§ä¸å®å
¨åä¸ç§å®å
¨ç转æ¢æ¹å¼å¯ä»¥å®ç°è¯¥åè½ï¼
ããå设æ们æç¶ç±»ååç±»çå®ä¹å¦ä¸ï¼
class Baseãã1. 强å¶è½¬æ¢ï¼ä¸å®å ¨ï¼
Base* b = new Derived();ããè¿éä¹æ以说ä¸å®å ¨æ¯å 为转æ¢çæ¶åæ æ³å¾ç¥æ¯å¦è½¬æ¢æåãç¼è¯å¨å¼ºå¶ædå½æDerivedç±»åå»ä½¿ç¨ãæ¯å¦è¯´bæ¬æ¥æ¯ççæåBaseèä¸æ¯Derivedç±»åé£ä¹å¼ºå¶è½¬æ¢åè°ç¨DerivedçNewFuncå¯è½ä¼å¯¼è´ç¨åºå´©æºã
ãã2.å¨æ转æ¢ï¼dynamic_castï¼å®å ¨ï¼
Base* b = new Derived();ããdynamic_castæ¯å¨è¿è¡æ¶å»å转æ¢èéç¼è¯æ¶ï¼æ以å®å¯ä»¥ç»åºæ¯å¦è½¬æ¢æåçä¿¡æ¯ãå¦æ转æ¢ä¸æååè¿åNULLãæ以å¯ä»¥å¤æ转æ¢ç»ææ¯å¦ä¸ºNULLæ¥å³å®æ¯å¦è½ä½¿ç¨è¯¥æéä¸ä¼å¯¼è´ç¨åºå´©æº
ããdynamic_caståèï¼