impulso :: :: sistema de ficheros ruta y std :: string
-
29-09-2019 - |
Pregunta
Tengo una clase de cadena que tiene un miembro de std :: string. Uno de los constructor es
String (std::string s)
{
// member: std::string _mString;
_mString = s; // error on path assignment
}
I ahora tienen funciones que toman String como parámetro, por ejemplo, Load (camino String);
, pero resulta que el sistema de archivos impulso :: :: :: string ruta () es incompatible con el constructor de String, sin embargo, normalmente la asignación está bien
boost::filesystem::path somepath("some directory")
std::string filename = somepath.extension(); // OK!
Lo que está pasando? ¿Cómo puedo hacer mi trabajo constructor? Gracias.
EDIT: Problema resuelto por lo que es ref const, pero todavía curiosidad por qué el error, ya que parece que está bien para pasar una copia ya que se puede asignar directamente. Error en xstring archivo
void __CLR_OR_THIS_CALL _Tidy(bool _Built = false,
size_type _Newsize = 0)
{ // initialize buffer, deallocating any storage
if (!_Built)
;
else if (_BUF_SIZE <= _Myres)
{ // copy any leftovers to small buffer and deallocate
_Elem *_Ptr = _Bx._Ptr;
if (0 < _Newsize)
_Traits_helper::copy_s<_Traits>(_Bx._Buf, _BUF_SIZE, _Ptr, _Newsize);
_Mybase::_Alval.deallocate(_Ptr, _Myres + 1);
}
_Myres = _BUF_SIZE - 1; // **** ERROR ***
_Eos(_Newsize);
}
Solución
en su constructor: String (std::string s)
debe ser String (const std::string& s)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow