#include "boost/shared_ptr.hpp"
class Base
{
public:
Base(){};
virtual ~Base(){};
};
class DeriveClass : public Base
{
public:
DeriveClass():Base(){};
virtual ~DeriveClass(){};
};
int main(int argc, _TCHAR* argv[])
{
boost::shared_ptr<Base> ptrBase = boost::shared_ptr<DeriveClass>(new DeriveClass()); // 这样转换成功
// 下面出现编译错误
boost::shared_ptr<DeriveClass> ptrDerive = dynamic_cast<boost::shared_ptr<DeriveClass> >(ptrBase);
// 下面正确
boost::shared_ptr<DeriveClass> ptrDerive = boost::dynamic_pointer_cast<DeriveClass>(ptrBase);
return 0;
}
boost shared_ptr 基类转到子类 boost::dynamic_pointer_cast
最新推荐文章于 2024-07-03 13:22:11 发布