boost :: filesystem :: path and std :: string
-
29-09-2019 - |
質問
メンバーSTD ::文字列を備えた文字列クラスがあります。コンストラクターの1つはです
String (std::string s)
{
// member: std::string _mString;
_mString = s; // error on path assignment
}
現在、文字列をパラメーターとして使用する関数があります。
しかし、boost :: filesystem :: path :: string()はその文字列コンストラクターと互換性がないことがわかりましたが、通常は割り当ては問題ありません
boost::filesystem::path somepath("some directory")
std::string filename = somepath.extension(); // OK!
何が起こっている?コンストラクターを機能させるにはどうすればよいですか?ありがとう。
編集:const Refを作成することで問題が解決しますが、コピーを直接割り当てることができるため、コピーを渡すことは問題ないように見えるため、なぜエラーが不思議に思っています。ファイル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);
}
解決
コンストラクターで: String (std::string s)
あるべきです String (const std::string& s)
所属していません StackOverflow