簡體   English   中英

將引用包裝器的向量轉換為基類,將reference_wrapper的向量轉換為派生類,則無法動態轉換

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

如標題中所示。 嘗試dynamic_cast時出現此錯誤

無法將'(&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()));
    }
}

向前聲明還不夠。

MEPGene定義是必需的(以了解繼承)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM