如标题中所示。尝试dynamic_cast时出现此错误


  无法dynamic_cast'(&
  obj)-> std :: reference_wrapper :: 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()));
    }
}

最佳答案

向前声明还不够。

必须定义MEPGene(才能看到继承)。

关于c++ - 将引用包装器的 vector 转换为基类,将reference_wrapper的 vector 转换为派生类,则无法动态转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38738730/

10-08 22:50