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);
        }
¿Fue útil?

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
scroll top