3

メンバ std::string を持つ String クラスがあります。コンストラクタの1つは

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

Load(String path); など、String をパラメーターとして受け取る関数があります。

しかし、boost::filesystem::path::string() はその 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);
        }
4

1 に答える 1

4

あなたのコンストラクターで:String (std::string s)あるべきですString (const std::string& s)

于 2010-10-11T18:50:48.383 に答える