【问题标题】:Transform vector of reference wrapper to Base class to vector of reference_wrapper to Derived class cannot dynamic cast将引用包装器的向量转换为基类到引用包装器的向量到派生类不能动态转换
【发布时间】:2016-08-03 08:47:54
【问题描述】:

如标题。尝试进行 dynamic_cast 时出现此错误

不能dynamic_cast '(& obj)->std::reference_wrapper<_tp>::get()' (类型为 'class MEPObject') 输入 'class MEPGene&' (目标不是指针或 参考完整类型) genes.push_back(dynamic_cast (obj.get()));

class MEPObject;
class MEPGene;
typedef std::vector<std::reference_wrapper<MEPObject>> MEPObjects;
typedef std::vector<std::reference_wrapper<MEPGene>> MEPGenes;

void dynamicCast(MEPObjects &objects, MEPGenes &genes)
{
    for(const auto &obj: objects)
    {
        genes.push_back(dynamic_cast<MEPGene&> (obj.get()));
    }
}

【问题讨论】:

    标签: c++ dynamic-cast reference-wrapper


    【解决方案1】:

    前向声明是不够的。

    MEPGene 的定义是必需的(查看继承)。

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2020-03-16
      相关资源
      最近更新 更多