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”“序列化”,其是非类类型的“双”。 但没有“T * data”就没问题。我找到了答案How to serialize derived template classes with Boost.serialize? 我添加了这一行“oa.template register_type < MultidimArray>();”。 但编译时,我得到了这个“错误|'模板'(作为消歧器)只允许在模板中”。 如何序列化和反序列化这种类?C++:序列化/反序列化类如下:
T在你的情况是什么?如果'T'是另一个类,你是否为它实现了'serialize'? – farcost
@farcost T可以是任何类,但是我将它设置为这里的一倍 – Raloy