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

时间:2015-02-09 22:45:02

标签: c++

我有这段代码:

在标题中:

...
int32_t round(float v);
...

并在源

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

    return t;
}
...

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

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

1 个答案:

答案 0 :(得分:18)

Function overloading 表示有多个具有相同名称的方法。

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

int round(float something) { ... }
float round(float something) { ... }

然后编译器无法区分它们并知道您要在呼叫点调用哪一个。因此,在您的情况下,这意味着已有另一个round方法接受float