简体   繁体   English

将引用包装器的向量转换为基类,将reference_wrapper的向量转换为派生类,则无法动态转换

[英]Transform vector of reference wrapper to Base class to vector of reference_wrapper to Derived class cannot dynamic cast

As in title. 如标题中所示。 I got this error when trying to dynamic_cast 尝试dynamic_cast时出现此错误

cannot dynamic_cast '(& obj)->std::reference_wrapper<_Tp>::get()' (of type 'class MEPObject') to type 'class MEPGene&' (target is not pointer or reference to complete type) genes.push_back(dynamic_cast (obj.get())); 无法将'(&obj)-> std :: reference_wrapper <_Tp> :: get()'(类型为'MEPObject'类型)'动态转换为'类MEPGene&'(目标不是指针或对完整类型的引用)基因。 (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()));
    }
}

Forward declaration is not enough. 向前声明还不够。

Definition of MEPGene is required (to see inheritance). MEPGene定义是必需的(以了解继承)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 转换std:vector <reference_wrapper<Base> &gt;到std:vector <reference_wrapper<Derived> &gt;运行时错误时间:0存储器:3412信号:6 - Transform std:vector<reference_wrapper<Base>> to std:vector<reference_wrapper<Derived>> Runtime error time: 0 memory: 3412 signal:6 C ++中具有带有基类和reference_wrapper的向量的多态 - Polymorphism in C++ with a vector with base classes and reference_wrapper 打印 reference_wrapper 的向量<int> - Printing a vector of reference_wrapper<int> 在本地使用reference_wrapper初始化向量 - Initializing vector with reference_wrapper's locally 处理 std::reference_wrapper 的最佳方法<derived>作为 std::reference_wrapper<base></derived> - Best way to treat std::reference_wrapper<Derived> as std::reference_wrapper<Base> C++ reference_wrapper 向量填充错误值 - C++ reference_wrapper vector fills with wrong values push_backs到std :: vector <std::reference_wrapper<type> &gt; - push_backs to a std::vector<std::reference_wrapper<type>> C ++ - 如何使用reference_wrapper的向量 - C++ - How to use a vector of reference_wrapper 保留reference_wrapper对象的向量,它是如何可能的? - Reserve a vector of reference_wrapper objects, how it is possible? C ++如何使用reference_wrapper的向量 - C++ how to use vector of reference_wrapper
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM