我試圖將一個成員變量添加到Boost存檔類。繼this,我想出了:boost :: archive :: text_oarchive的簡單擴展
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <fstream>
class MyOArchive : public boost::archive::text_oarchive_impl<MyOArchive>
{
public:
bool MyData;
friend class boost::archive::detail::common_oarchive<MyOArchive>;
friend class basic_text_oarchive<MyOArchive>;
//friend class boost::serialization::save_access; // save_access in namespace boost::serialization does not name a type
MyOArchive(std::ostream& os, unsigned int flags = 0) : boost::archive::text_oarchive_impl<MyOArchive>(os, flags) {}
};
class MyClass
{
public:
private:
friend class boost::serialization::access;
double Value;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & Value;
}
};
int main()
{
MyClass myClass;
std::ofstream outputStream("test.txt");
//boost::archive::text_oarchive outputArchive(outputStream);
MyOArchive outputArchive(outputStream);
outputArchive << myClass;
outputStream.close();
return 0;
}
不過,我得到了鏈接錯誤:
undefined reference to boost::archive::text_oarchive_impl<MyOArchive>::text_oarchive_impl(std::ostream&, unsigned int)
任何人能解釋這是怎麼回事錯在這裏?我不需要重新實現存檔的任何功能,只需附加此成員MyData
即可。
你可以讓樣品自包含嗎?我記得當我的boost庫使用不同版本的GCC編譯時,看到了這樣的細微問題。但我不記得具體情況。如果您發佈了一個包含自己的示例,可以嘗試重現鏈接器錯誤。 – sehe
@sehe這個例子是自包含的,不是?請注意,如果切換到Boost中包含的標準存檔類,它鏈接正常。 –
你是對的。一些我第一次瀏覽它時錯過了一部分。 – sehe