2016-08-03 115 views
0

与标题一样。我想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())); 
    } 
} 

回答

1

向前声明是不够的。

需要定义MEPGene(查看继承)。