[英]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.