Я смотрю на использование подталкивания :: сериализации и пытаюсь использовать строку помощник на данную http://www.ocoudert.com, который имеет интерфейсссылки на константный символ *, ошибка C2664:
SerializeCStringHelper(char*& s) : s_(s) {}
SerializeCStringHelper(const char*& s) : s_(const_cast<char*&>(s)) {}
Я пытаюсь использовать это помощник в следующем коде (GetName() возвращает зЬй :: строки)
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;
}
который компилирует хорошо, но теперь, если я заменить константные символ * StR и вспомогательные линии с закомментированным кодом, я получаю ошибку компиляции C2664: невозможно преобразовать параметр 1 из 'const char *' в 'char * & '
Вопрос в том, почему единственная линия, отличная от двух отдельных линий?
Блестящий, спасибо –
Если ответ был полезен, вы можете его принять;) – Borgleader