sunnycase吧 关注:16贴子:918
  • 3回复贴,共1

原来是类型转换的问题。。

取消只看楼主收藏回复

字典里面存放的类型是 void*
给定的是某个类的派生类
使用的时候使用了强制类型转换
然后就出错了
不过为什么呢?


1楼2011-05-24 22:27回复
    错误:return (IBaseScene*)(ptr);
    正确:return (IBaseScene*)((CBaseScene*)(ptr));


    2楼2011-05-24 22:28
    回复
      这样子内部解决了
      但是外部怎么办?
      管理器实现了getPtr。通过名称返回指针
      可如果是强制类型转换就会报错
      比如:myScn = (IBaseScene*)myScnMgr->getPtr("Test");
      myScnMgr->getPtr返回 IBaseScene 的虚拟基类 ISceneBase


      3楼2011-05-24 22:34
      回复
        好吧……自己解决了。。当我没说
        getPtr中
        return (ISceneBase*)(CSceneBase*)it->second;
        外部
        myScn = dynamic_cast<IBaseScene*>(myScnMgr->getPtr("Test"));


        4楼2011-05-24 22:37
        回复