明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1261|回复: 2

判别类型和得到类型指针的方法报错,求救!

[复制链接]
发表于 2003-7-11 09:44:00 | 显示全部楼层 |阅读模式
请大家提供另外一种判别类型和得到类型指针的方法,下面我三次用到pEntity->isKindOf(AcDbQiang::desc())和
AcDbQiang::cast(pEntity)判别类型和得到类型指针CAD报错,不知道为什么?
for (; !pBlockIterator->done();pBlockIterator->step())
    {
        pBlockIterator->getEntity(pEntity, AcDb::kForWrite);
       if(pEntity->isKindOf(AcDbQiang::desc()))
      {
          AcDbQiang::cast(pEntity)->getlouHao(louHao);
         if(louHao!=layerhao)
          {
        AcDbQiang::cast(pEntity)->setVisibility(AcDb::kInvisible);
        pEntity->close();                       
         }
        else if(louHao==layerhao)
         {
               AcDbQiang::cast(pEntity)->setVisibility(AcDb::kVisible);
        pEntity->close();               
        }
     }
    else if(pEntity->isKindOf(AcDbliang::desc()))
    {
       AcDbliang::cast(pEntity)->getlouHao(louHao);
       if(louHao!=layerhao)
       {
            AcDbliang::cast(pEntity)->setVisibility(AcDb::kInvisible);
           pEntity->close();       
                               
       }
       else if(louHao==layerhao)
      {
           AcDbliang::cast(pEntity)->setVisibility(AcDb::kVisible);
           pEntity->close();
                               
      }
    }
   else if(pEntity->isKindOf(AcDbZhu::desc()))
  {
      AcDbZhu::cast(pEntity)->getlouHao(louHao);
     if(louHao!=layerhao)
    {
        AcDbZhu::cast(pEntity)->setVisibility(AcDb::kInvisible);
        pEntity->close();
                                       
      }
     else if(louHao==layerhao)
     {
          AcDbZhu::cast(pEntity)->setVisibility(AcDb::kVisible);
          pEntity->close();                       
      }
}
  pEntity->close();
}
发表于 2003-7-11 14:00:00 | 显示全部楼层
if(pEntity->isKindOf(AcDbQiang::desc()))不能完全說明pEntity是指向AcDbQiang類實例.還有可能是其派生類.但AcDbQiang::cast(pEntity)就不同了.只要前後都用AcDbQiang::cast(pEntity)就行了吧.
而且你的這種寫法我覺得是不太好的.當然只是個人風格.
 楼主| 发表于 2003-7-12 19:41:00 | 显示全部楼层
谢谢funlxming,但我相应改过来以后,还是报错,我发现我的AcDbZhu,AcDbQiang,AcDbliang都派生于AcDbEntity,可是当我用if(pEntity->isKindOf(AcDbQiang::desc()))进行第一次遍历率选时只会得到AcDbQiang,而当我把AcDbZhu和AcDbliang加入以后,再次用if(pEntity->isKindOf(AcDbQiang::desc()))遍历率选却得到AcDbZhu、AcDbQiang和AcDbliang,把条件换成if(AcDbQiang::cast(pEntity))结果相同,如果谁有过相似的问题或知道怎么解决,就帮帮我
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:20 , Processed in 0.141615 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表