将引用包装器的向量转换为Base类到reference_wrapper的向量到Derived类不能动态转换

时间:2016-08-03 08:47:54

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

如标题所示。尝试使用dynamic_cast

时出现此错误
  

不能dynamic_cast'(&   OBJ) - >的std ::的reference_wrapper< _TP> ::得到()' (类型'类   MEPObject')键入'类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()));
    }
}

1 个答案:

答案 0 :(得分:1)

前向声明是不够的。

需要定义/pages(查看继承)。