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