对重载函数的不明确调用 - std::to_string
Ambiguous call to overloaded function - std::to_string
在尝试将整数值插入字符串时,我认为当我发现std::to_string时我的祈祷得到了回应,但是出于某种原因,每当我实际尝试使用它时,Visual Studio都会抱怨歧义。 这是我函数的当前化身:
string get_time_remaining (int elapsed)
{
string remaining;
string temp_string;
int time_remaining = TimeLimit - elapsed;
int temp_int;
temp_int = int(time_remaining / 3600);
if(temp_int == 0)
remaining = "00 : ";
else
{
temp_string = std::to_string(temp_int); // Here!
remaining = temp_string + " : ";
}
temp_int = time_remaining % 60 + 1;
if(temp_int < 10)
remaining = remaining + "0";
temp_string = std::to_string(temp_int);
remaining = remaining + temp_string;
return remaining;
}
我尝试在调用 to_string 中转换temp_int,正如您所看到的,我什至尝试转换应该是整数除法的结果,但无论我做什么,VS 都会向我吐出这一点:
d:my programspowerplaypowerplaypowerplay.cpp(1285): error C2668: 'std::to_string' : ambiguous call to overloaded function
1> d:microsoft visual studio 10.0vcincludestring(688): could be 'std::string std::to_string(long double)'
1> d:microsoft visual studio 10.0vcincludestring(680): or 'std::string std::to_string(_ULonglong)'
1> d:microsoft visual studio 10.0vcincludestring(672): or 'std::string std::to_string(_Longlong)'
任何帮助将不胜感激。
MSVC11 缺少用于std::to_string
的适当重载,因此您必须执行static_cast
才能unsigned long long
或long long
请注意,此错误已在 2012 年 11 月的 CTP 中修复。你可以在这里得到。
temp_int
是一个int
值,Visual Studio似乎只检测接收double
,long long
或unsigned long long
值的重载,因此它不知道要使用哪个重载,因此歧义(尽管将整数转换为长整型值似乎很直观)
要么将temp_int
声明为long long
,要么在调用函数时强制转换它
相关文章:
- std::bind to void* to std::function
- std::time_point from and to std::string
- "No suitable conversion function from 'std::string' to 'const char *' exists"
- Port pthread_cond_broadcast to std::atomic
- from std::vector to adept::avector
- File to std::string_view
- 如何修复以下错误"no match for call to '(std::tr1::shared_ptr<_iobuf*>) (FILE*&)'"
- std::map to std::list leads to SIGSEGV
- std::bind to a std::variant 包含多个 std::函数类型
- NSMutableArray to std::vector
- 将 2D 数组插入 std::vector 时"cannot convert from 'const GLfloat [12]' to '_Objty'"错误消息
- 使用 std::min "no matching function for call to ‘min(<brace-enclosed initializer list>)’"时出错
- 返回"Cannot convert from 'std::ofstream {aka std::basic_ofstream<char>}' to bool"错误
- reinterpret_cast std::function* to and from void*
- std::string to std::regex
- 使用命名空间 std 时C++ "Reference to overloaded function"错误
- Copy std::vector to boost::interprocess::vector
- BOOST :: lexical_cast to std ::字符串失败
- C++ std::vector to JSON Array with rapidjson
- 最快的方式 std::vector<Derived> to std::vector<Base>