C++ 包含字符串时stl_algobase.h错误

C++ 包含字符串时stl_algobase.h错误,c++,stl,g++,C++,Stl,G++,在最近创建的项目中,我在尝试生成时出现以下错误: 注意:params.h:11只是#include 构建文件:../src/cmds/params.cpp 调用:跨G++编译器 g++-O0-g3-Wall-c-fmessage length=0-MMD-MP-MF“src/cmds/params.d”-MT“src/cmds/params.d”-o“src/cmds/params.o”“../src/cmds/params.cpp” 在/usr/include/c++/4.8/bits/cha

在最近创建的项目中,我在尝试
生成
时出现以下错误:

注意:
params.h:11
只是
#include

构建文件:../src/cmds/params.cpp
调用:跨G++编译器
g++-O0-g3-Wall-c-fmessage length=0-MMD-MP-MF“src/cmds/params.d”-MT“src/cmds/params.d”-o“src/cmds/params.o”“../src/cmds/params.cpp”
在/usr/include/c++/4.8/bits/char_traits.h:39:0中包含的文件中,
从/usr/include/c++/4.8/string:40,
从../src/cmds/params.h:11,
来自../src/cmds/params.cpp:8:
/usr/include/c++/4.8/bits/stl_algobase.h:在“static”的实例化中,std::::::::::
/usr/include/c++/4.8/bits/stl_algobase.h:390:70:必须来自“_oistd::_oicopy_move_a(_II,_II,_OI)[带bool _IsMove=false;_II=char*;_OI=std::ostream\u迭代器]”
/usr/include/c++/4.8/bits/stl_algobase.h:428:38:从“_oistd::_oicopy_move_a2(_II,_II,_OI)[带bool _IsMove=false;_II=_gnucxx:_normal_迭代器;_OI=std::ostream_迭代器]”中需要
/usr/include/c++/4.8/bits/stl_algobase.h:460:17:必须来自“_oistd::copy(_II,_II,_OI)[带_II=_gnu_cxx::_oinormal_迭代器;_OI=std::ostream_迭代器]”
../src/cmds/params.cpp:96:81:此处为必填项
/usr/include/c++/4.8/bits/stl_algobase.h:335:18:错误:从'char'到'const std::basic_string&'[-fppermissive]的用户定义转换无效
*__结果=*\uuuu优先;
^
在/usr/include/c++/4.8/string:53:0中包含的文件中,
从../src/cmds/params.h:11,
来自../src/cmds/params.cpp:8:
/usr/include/c++/4.8/bits/basic_string.tcc:212:5:注:候选项为:std::basic_string::basic_string(const_CharT*,const_Alloc&)[带_CharT=char;_Traits=std::char_Traits;_Alloc=std::分配器]
基本字符串::
^
/usr/include/c++/4.8/bits/basic_string.tcc:212:5:注意:参数1从'char'到'const char*'的转换未知
在/usr/include/c++/4.8/bits/char_traits.h:39:0中包含的文件中,
从/usr/include/c++/4.8/string:40,
从../src/cmds/params.h:11,
来自../src/cmds/params.cpp:8:
/usr/include/c++/4.8/bits/stl_algobase.h:335:18:错误:从“char”到“const char*”的转换无效[-fppermissive]
*__结果=*\uuuu优先;
^
在/usr/include/c++/4.8/string:53:0中包含的文件中,
从../src/cmds/params.h:11,
来自../src/cmds/params.cpp:8:
/usr/include/c++/4.8/bits/basic_string.tcc:212:5:错误:初始化'std::basic_string::basic_string(const _CharT*,const _Alloc&')[with _CharT=char;_Traits=std::char_Traits;_Alloc=std::allocator]的参数1'[-fpermissive]
基本字符串::
^
make:**[src/cmds/params.o]错误1

原因可能是什么?

以下错误在这里很重要

    /usr/include/c++/4.8/bits/stl_algobase.h:335:18: 
error: invalid user-defined conversion from ‘char’ to ‘const std::basic_string<char>&’ [-fpermissive]
            *__result = *__first;
/usr/include/c++/4.8/bits/stl_algobase.h:335:18:
错误:从“char”到“const std::basic_string&'[-fppermissive]的用户定义转换无效
*__结果=*\uuuu优先;

这表明在程序的某个地方,您正试图将char转换为std::string,这是不可能的。

顺便说一句,我想这是在第96行的params.cpp中的某个地方。幸运的是,
std::string
确实有一个接受字符和计数的构造函数。行
。/src/cmds/params.cpp:96:81:required from here
指示程序中的问题所在。
    /usr/include/c++/4.8/bits/stl_algobase.h:335:18: 
error: invalid user-defined conversion from ‘char’ to ‘const std::basic_string<char>&’ [-fpermissive]
            *__result = *__first;