在Boost序列化中,共享指针不起作用..它给出了错误 [英] In Boost serialization shared pointer does not work.. it gives error

查看:75
本文介绍了在Boost序列化中,共享指针不起作用..它给出了错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我正在尝试使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆