簡體   English   中英

用抽象 class 提升二進制序列化問題

[英]Boost binary serialization problem with abstract class

喬人,

我很安靜,不希望找到問題的根源。 我正在使用 Boost:serialization (版本 1.46.1),並且使用binary_oarchive一切正常。 我有一個類層次結構,因此,我使用register_type()

然而,當我開始使用binary_iarchive來反序列化我的對象時,我得到了

錯誤:無法分配抽象類型的 object

它來自對輸入存檔的register_type()調用。

谷歌搜索后,我發現宏BOOST_SERIALIZATION_ASSUME_ABSTRACT(T)必須用於抽象類。 問題是它根本不起作用:)。 誰能幫我嗎?

更多關於我的代碼:

virtual void AbstractClass::initBinarySerialization(binary_iarchive& ia)
        {
            ia.register_type<AbstractClass>();
        }

virtual void SubClass::initBinarySerialization(binary_iarchive& ia)
        {
            AbstractClass::initBinarySerialization(ia);
            ia.register_type<SubClass>();
        }

在閱讀存檔之前,我調用initBinarySerialization

錯誤:無法分配抽象類型的 object

似乎在您的代碼中的某處,您正在創建抽象class 的實例。 這就是您收到此錯誤的原因,因為禁止創建抽象class 的實例。 您只能創建具體類的實例。

你需要告訴 boost X 是一個抽象的 class,方法是:

BOOST_SERIALIZATION_ASSUME_ABSTRACT(X);

現在按照這個主題進一步解釋它:

暫無
暫無

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

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