什么"不能仅通过返回类型区分过载功能"是什么意思?

dom*_*120 6 c++

我有这个代码:

在标题中:

...
int32_t round(float v);
...
Run Code Online (Sandbox Code Playgroud)

在源头

...
int32_t round(float v)
{
    int32_t t = (int32_t)std::floor(v);
    if((v - t) > 0.5)
        return t + 1;

    return t;
}
...
Run Code Online (Sandbox Code Playgroud)

我在这个网站上环顾四周,但这些例子对我来说似乎有点过于复杂.

我正在学习C++,所以如果有人能够向我解释错误的含义以及错误发生的原因,我将不胜感激.

Jac*_*ack 21

函数重载意味着具有多个具有相同名称的方法.

现在,编译器解析正确的重载方法,查看方法名称和参数,但返回值为NO.这意味着,如果你有

int round(float something) { ... }
float round(float something) { ... }
Run Code Online (Sandbox Code Playgroud)

然后编译器无法区分它们并知道您要在调用点调用哪一个.所以在你的情况下,这意味着已经有另round一种接受a的方法float.