c++ - 在运行时 C++ 中使用派生类

标签 c++ pointers casting polymorphism runtime

这是在运行时检查 mybase 类是否是派生类。我需要在运行时使用 myBase 调用 myDerived.member1 中的成员变量,例如 myBase.member1。这里 myBase 是一个指针。如何做到这一点。

if(dynamic_cast<myDerived*>(myBase))

最佳答案

我会这样做:

myDerived* p_derived = nullptr;
p_derived = dynamic_cast<myDerived*>(myBase);
if (p_derived != nullptr)
   //do something with p_derived->member1;

这样您只需调用一次(可能代价高昂的)dynamic_cast

关于c++ - 在运行时 C++ 中使用派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872408/

相关文章:

c++ - 优化循环并避免模板特化中的代码重复

java - 如何解决 ClassCastException?也许是 JFileChooser 的类型转换错误

c++ - pthread_key_create 析构函数未被调用

c++ - 语法错误 : Declaration Expected. 为什么 gsoap 无法读取 vector ?

c++ - 引用继承自派生类的QList

C++ 类型转换惯用法

c++ - 确定数值类型 A 是否可以转换为数值类型 B

c++ - 指向空对象的引用

c++ - 将图像指针返回给 Erlang

c++ - 通过 "pointers to class members"访问作为数组的类成员