将引用包装的向量转换为基类向reference_wrapper的向量导出的类不能动态转换
问题描述:
与标题一样。我想dynamic_cast的时候这个错误将引用包装的向量转换为基类向reference_wrapper的向量导出的类不能动态转换
不能将dynamic_cast '(& OBJ) - >的std ::的reference_wrapper < _TP> ::得到()'(类型为 '类 MEPObject')键入“级MEPGene &'(target is not pointer or reference to complete type) 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()));
}
}
答
向前声明是不够的。
需要定义MEPGene
(查看继承)。