判别类型和得到类型指针的方法报错,求救!
请大家提供另外一种判别类型和得到类型指针的方法,下面我三次用到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();
} if(pEntity->isKindOf(AcDbQiang::desc()))不能完全說明pEntity是指向AcDbQiang類實例.還有可能是其派生類.但AcDbQiang::cast(pEntity)就不同了.只要前後都用AcDbQiang::cast(pEntity)就行了吧.
而且你的這種寫法我覺得是不太好的.當然只是個人風格. 谢谢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))结果相同,如果谁有过相似的问题或知道怎么解决,就帮帮我
页:
[1]