boost :: filesystem :: path和std :: string

时间:2010-10-11 10:17:15

标签: c++ boost path boost-filesystem

我有一个String类,它有一个成员std :: string。其中一个构造函数是

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

我现在有把String作为参数的函数,例如加载(字符串路径);

但事实证明boost :: filesystem :: path :: string()与该String构造函数不兼容,但通常分配是正确的

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

发生了什么事?如何让我的构造函数工作?感谢。

编辑:问题通过使其成为常量问题解决,但仍然好奇为什么错误,因为它似乎可以传递副本,因为它可以直接分配。 文件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);
        }

1 个答案:

答案 0 :(得分:4)

在您的构造函数中:String (std::string s)应为String (const std::string& s)