sunnycase吧 关注:16贴子:918
  • 5回复贴,共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
        回复
          字典为什么不用泛型


          IP属地:北京来自掌上百度5楼2011-05-24 22:49
          回复
            回复5楼:
            想用泛型来着,但是不知道怎么声明。。
            而且昨晚才考虑到泛型。。


            来自掌上百度6楼2011-05-25 07:46
            回复