在Boost序列化中,共享指针不起作用..它给出了错误 [英] In Boost serialization shared pointer does not work.. it gives error
问题描述
大家好,
我正在尝试使用boost序列化共享指针,但它会出错:
错误1错误C4308:负整数常量转换为无符号类型c:\users \mydirect \future \lib \ boost_1_55_0 \\\\\\\\\\\\\\\\\\\\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ b $ b
花了2天以上但没有线索..当我评论行ar& MyInfo错误没有来的时候,这意味着肯定问题是共享指针..怎么做我继续。
以下是代码:
// MyData.hpp文件>
struct MyData
{
std :: string id;
std :: string name;
boost :: shared_ptr< mydata> MYDATA;
私人:
朋友类boost :: serialization :: access;
template< class archive = >
void serialize(Archive& ar,const unsigned int version)
{
ar& id;
ar&姓名;
ar& MYDATA;
}
public:
MyData(void);
MyData( const parameter_strings& parms);
virtual~MyData(void);
};
} < br $>
// MyData.cpp文件
MyData :: MyData(无效)
$
}
MyData ::〜MyData(无效)
{
}
MyData :: MyData(const parameter_strings& parms)
{
//实施aprt
}
BOOST_CLASS_EXPORT_IMPLEMENT(MyData); BOOST_CLASS_IMPLEMENTATION(MyData,boost :: serialization :: object_serializable);
BOOST_CLASS_TRACKING(MyData,boost :: serialization :: track_selectively);
Hi All,
I'm trying to serialize shared pointer using boost but it gives error :
Error 1 error C4308: negative integral constant converted to unsigned type c:\users\mydirect\future\lib\boost_1_55_0\boost\mpl\print.hpp 51 1 Input
Spent more than 2 days on this but no clue.. when i comment line "ar & MyInfo" error does not come so it means surely issue is with shared pointer.. how do i go ahead.
Below is the code :
// MyData.hpp file
struct MyData
{
std::string id;
std::string name;
boost::shared_ptr<mydata> Mydata;
private:
friend class boost::serialization::access;
template<class archive="">
void serialize(Archive &ar, const unsigned int version)
{
ar & id;
ar & name;
ar & Mydata;
}
public:
MyData(void);
MyData(const parameter_strings & parms);
virtual ~MyData(void);
};
}
// MyData.cpp file
MyData::MyData(void)
{
}
MyData::~MyData(void)
{
}
MyData::MyData(const parameter_strings & parms)
{
// implementation aprt
}
BOOST_CLASS_EXPORT_IMPLEMENT(MyData); BOOST_CLASS_IMPLEMENTATION(MyData,boost::serialization::object_serializable);
BOOST_CLASS_TRACKING(MyData,boost::serialization::track_selectively);
推荐答案
我认为下面的清洁版本将更加可行。错误代码是指第一次输入Print.hpp第51行。
I think the cleaned version below will be more workable. The error code refers to Print.hpp line 51 first input.
// MyData.hpp file
typedef struct tagMyData
{
std::string id;
std::string name;
boost::shared_ptr ptMydata;
public:
MyData(void);
MyData(const parameter_strings& parms);
virtual ~MyData(void);
private:
friend class boost::serialization::access;
template
void serialize(Archive &ar, const unsigned int version)
{
ar &id;
ar &name;
ar &ptMydata;
ar &version;
}
} MyData;
// MyData.cpp file
MyData::MyData(void)
{
}
MyData::~MyData(void)
{
}
MyData::MyData(const parameter_strings & parms)
{
// implementation aprt
}
BOOST_CLASS_EXPORT_IMPLEMENT(MyData); BOOST_CLASS_IMPLEMENTATION(MyData,boost::serialization::object_serializable);
BOOST_CLASS_TRACKING(MyData,boost::serialization::track_selectively);
这篇关于在Boost序列化中,共享指针不起作用..它给出了错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!