【发布时间】:2016-06-15 05:38:45
【问题描述】:
template<typename T>
class MultidimArray:
{
public:
T* data;
long int xinit;
...
private:
friend class boost::serialization::access;
template <class Archive>
void serialize(Archive &ar, const unsigned int version){
ar & data;
ar & xinit;
ar & ...;
}
};
stringstream ss;
void serializateWs(){
MultidimArray<DOUBLE> Mpack;
boost::archive::text_oarchive oa(ss);
oa << Mpack;
}
编译错误:在‘t’中请求成员‘serialize’,它是非类类型‘double’。 但是没有“T *数据”就可以了。我找到了答案How to serialize derived template classes with Boost.serialize? 我添加了这一行“oa.template register_type();”。 但是我在编译时得到了这个“错误|'模板'(作为消歧器)只允许在模板中使用”。 如何序列化和反序列化这种类?
【问题讨论】:
-
在您的情况下,T 是什么?如果
T是另一个类,你是否为它实现了serialize? -
@farcost T 可以是任何类,但我在这里设置为双倍
标签: c++ class templates serialization boost