【问题标题】:using derived class in runtime c++在运行时 C++ 中使用派生类
【发布时间】:2015-04-26 00:44:18
【问题描述】:

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

if(dynamic_cast<myDerived*>(myBase))

【问题讨论】:

  • dynamic_cast&lt;&gt; 不返回 bool。它要么抛出异常,要么返回 myDerived * 指针。
  • dynamic_cast&lt;myDerived*&gt;(myBase)-&gt;member1?
  • @Carlton 是的,它有效,谢谢!
  • @Carlton dynamic_cast 与引用 (dynamic_cast&lt;Derived&amp;&gt;(base)) 一起使用时会在失败时抛出 bad_cast 异常,这可能是 @user2225104 所引用的。
  • @JamesAdkison 哎呀,我什至没有考虑非指针类型。评论已删除。

标签: c++ pointers casting polymorphism runtime


【解决方案1】:

我会这样做:

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

这样,您只需向dynamic_cast 打一次(可能很昂贵)电话。

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 2010-12-13
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多