我正在考虑使用 boost::serialization 并尝试使用http://www.ocudert.com上提供的具有接口的字符串助手
SerializeCStringHelper(char*& s) : s_(s) {}
SerializeCStringHelper(const char*& s) : s_(const_cast<char*&>(s)) {}
我尝试在以下代码中使用此助手(getName() 返回 std::string)
bool MyUtilities::saveSerialLibraryToFile(const string& fileName, const MyLibrary& lib)
{
bool saved = false;
ofstream out(fileName, ios::app);
if(out.is_open())
{
boost::archive::text_oarchive ar(out);
const char* str = lib.getName().c_str();
SerializeCStringHelper helper(str);
// SerializeCStringHelper helper(lib.getName().c_str());
ar & helper;
saved=true;
}
return saved;
}
编译得很好,但是现在如果我用注释掉的代码替换 const char* str 和 helper 行,我得到编译错误 C2664: cannot convert parameter 1 from 'const char *' to 'char *&'
我的问题是,为什么单行不同于两条单独的行?