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:
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.
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
Vous devez vous connecter pour publier un commentaire.
dans votre constructeur:
String (std::string s)
devrait êtreString (const std::string& s)
OriginalL'auteur Sam Miller