阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。 【说明】 某网络游戏存在战士(Fighter)、野蛮人(Savage)、白法师(White Witch)三种角色,它们具有Role接口,角色的类图关系如图1.1所示。现要将黑法师(Bla

admin2009-05-15  42

问题 阅读以下说明和C++代码,将应填入(n)处的字句写在对应栏内。
【说明】
   某网络游戏存在战士(Fighter)、野蛮人(Savage)、白法师(White Witch)三种角色,它们具有Role接口,角色的类图关系如图1.1所示。现要将黑法师(BlackWitch)角色加入此网络游戏以实现功能扩充。已知某第三方库已经提供了法师(Witch)类,且完全满足系统新增的黑法师角色所需的功能,但法师 (Witch)不是由Role派生而来,它提供的接口不能被系统直接使用。代码8-1既使用了法师(Witch),又遵循了Role规定的接口,既避免了从头开发一个新的黑法师类,又可以不修改游戏中已经定义的接口。代码8-2根据用户指定的参数生成特定的角色实例,并对之进行显示操作。
   游戏中定义的接口与黑法师(BlackWitch)提供的显示接口及其功能见表1.1。
   
【代码8-1】
class BlackWitch: public  (1)  {
    private:
           (2)   m_BlackWitch;
    public:
         void display( ) {
               m_BlaekWitch.  (3)  ;
         } };
【代码8-2】
class Factory {
public:
     (4)   getRolelnstance( int type){ //生成特定类实例
          switch (type) {
               case 0: return new Fighter;
               case 1: return new Savage;
               case 2: return new WhiteWitch;
               case 3: return new BlackWitch;
                default: return NULL;
        }
     }
};
void main(int arge,ehar * argv[ ] ) {
    if(arge ! =2){
         cout < < "error parameters !" < < end1;
         return;
    }
    int type = atoi(argv[ 1 ] );
    Factory factory;
    Role * s;
    s = factory.  (5);
    if(s = = NULL) {
         cout < < "Error get the instance !" < < end1;
         return;
    }
    s-- > display( );
    delete s;
    return;
}

选项

答案(4)Role*

解析 主函数中s是Role*类型的,所以getRoielnstance (int type)返回值类型为Role* 。
转载请注明原文地址:https://jikaoti.com/ti/2PW7FFFM
0

相关试题推荐
最新回复(0)