这个动态转型一直失败返回nullptr,为什么呀?(指针)基类类型不能转到子类类型嘛?不科学啊?图中注释是直接测的一些结果。
基类本来就不能转为子类啊,dynamic_cast的用法是把指向子类对象的基类指针安全地转为子类指针,比如这个例子是可以的
class A
{
public:
virtual ~A() = default;
};
template<typename T>
class B :public A
{
};
int main()
{
A* p = new B<int>;
B<int>* p1 = dynamic_cast<B<int>*>(p);
std::cout << p1;
return 0;
}
你可以参考下这篇文章:C++ RTTI详解