boost::filesystem::chemin d'accès et le std::string

J'ai une classe String qui a un membre std::string. L'un des constructeur est

String (std::string s)
{
    //member: std::string _mString;
    _mString = s;  //error on path assignment
}

J'ai maintenant des fonctions qui prennent Chaîne de caractères comme paramètre, par exemple Load(String path);

mais il s'avère que boost::filesystem::chemin d'accès::string() est incompatible avec cette Chaîne constructeur, pourtant, normalement, l'attribution est ok

boost::filesystem::path somepath("some directory")
std::string filename = somepath.extension(); //OK!

Ce qui se passe? Comment puis-je faire mon constructeur de travail? Merci.

EDIT: Problème résolu, en le rendant const ref, mais toujours curieux de savoir pourquoi l'erreur, car il semble ok pour passer une copie, car il peut être affecté directement.
Erreur dans le fichier xstring

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);
        }
Quel est le défaut d'affectation?
Pouvez-vous poster plus de code et de détails?
dans votre constructeur: String (std::string s) devrait être String (const std::string& s)
il y a certainement une efficacité de la question, mais pourquoi dites-vous que doit être de cette façon?
juste assez; je n'étais pas très clair. Je me demandais si votre ordonnance n'avait rien à voir avec l'erreur à portée de main.

OriginalL'auteur Jake | 2010-10-11