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&lt; MultidimArray&gt;();”。 但我得到这个“错误|'模板'(作为消除歧义)只允许在模板中”编译时。 我如何序列化和反序列化这类课程?
答案 0 :(得分:0)
使用数组包装器:http://www.boost.org/doc/libs/1_49_0/libs/serialization/doc/wrappers.html#arrays,例如像:
master = Tk()
entryb1 = StringVar
Label(master, text="Input: ").grid(row=0, sticky=W)
Entry(master, textvariable=entryb1).grid(row=1, column=1)
b1 = Button(master, text="continue", command=print_content)
b1.grid(row=2, column=1)
def print_content():
global entryb1
content = entryb1.get()
print(content)
master.mainloop()
注册类型与事物无关,除非T是多态指针。