0
我正在使用boost :: serialization,下面是我的類,我試圖在主函數中序列化這個類對象。如何在C++中使用boost:serialization時解決「sizeof」錯誤?
#include <unistd.h>
#include <errno.h>
#include <arpa/inet.h>
#include <map>
#include <sstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/access.hpp>
#include <boost/static_assert.hpp>
using namespace boost;
using namespace std;
class gps_position
{
public:
int i ;
int j;
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & i;
ar & j;
}
gps_position(){};
gps_position(int a, int b):i(a), j(b){};
};
int main()
{
std::stringstream ss;
boost::archive::text_oarchive ar(ss);
gps_position obj(10, 20);
ar << obj;
return 0;
}
但我發現了以下編譯錯誤:
/usr/include/boost/archive/detail/oserializer.hpp: In function 'void boost::archive::save(Archive&, T&) [with Archive = boost::archive::text_oarchive, T = gps_position]':
/usr/include/boost/archive/basic_text_oarchive.hpp:78: instantiated from 'void boost::archive::basic_text_oarchive<Archive>::save_override(T&, int) [with T = gps_position, Archive = boost::archive::text_oarchive]'
/usr/include/boost/archive/detail/interface_oarchive.hpp:78: instantiated from 'Archive& boost::archive::detail::interface_oarchive<Archive>::operator<<(T&) [with T = gps_position, Archive = boost::archive::text_oarchive]'
client.cpp:70: instantiated from here
/usr/include/boost/archive/detail/oserializer.hpp:567: error: invalid application of 'sizeof' to incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'
以下是庫安裝在我的系統提升:
boost-debuginfo-1.33.1-15.1.el5
boost-debuginfo-1.33.1-15.1.el5
boost-devel-1.33.1-15.1.el5
boost-1.33.1-15.1.el5
boost-1.33.1-15.1.el5
boost-doc-1.33.1-15.1.el5
boost-devel-1.33.1-15.1.el5
任何指針來解決這些編譯錯誤?
在這裏猜測,但您可能只需要明確包含''標頭? –
Keith
無法[再現](http://coliru.stacked-crooked.com/a/1058cf440fe711b0)錯誤(您看到的錯誤都是鏈接器錯誤,代碼編譯)。你可以發佈一個[SSCCE](http://sscce.org)嗎? – Praetorian
@Keith我還嘗試過包括上面的頭後仍然存在錯誤。 :( – BSalunke