如标题中所示。尝试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/