gpt4 book ai didi

c++ - 在 Visual C++ 中将 std::string 添加到 uint 时出现模棱两可的错误

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:02 27 4
gpt4 key购买 nike

当我在 Visual Studio 2008/Windows SDK 7 上编译以下代码时出现以下错误

const UINT a_uint;
UINT result;

throw std::runtime_error( std::string("we did ") + a_uint +
" and got " + result );

具有讽刺意味的是,我最终得到了这个结果:

error C2782: 'std::basic_string<_Elem,_Traits,_Alloc> std::operator +(
const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem
)' : template parameter '_Elem' is ambiguous

有人可以解释为什么错误消息不能解释真正的问题(没有运算符可以将整数转换为字符串)吗?

最佳答案

你可以减少到这个

template<typename T>
void f(T, T);

int main() {
f('0', 0); // is T int or char?
}

您尝试将一个无符号整型添加到一个字符串中。这没有意义,std::string 类不需要采取任何预防措施来在此处向 char 添加隐式转换,因为这会隐藏此类潜在的编程错误。

尝试将 unsigned int 转换为 std::string 为十进制/十六进制/八进制等形式,然后连接(您可以使用 std::ostringstreamboost::lexical_cast) 或以您认为合适的其他方式修复错误。

关于c++ - 在 Visual C++ 中将 std::string 添加到 uint 时出现模棱两可的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3800141/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com