相关疑难解决方法(0)

对重载函数错误的奇怪模糊调用

我尝试着

void function(int y,int w)
{
    printf("int function");

}


void function(float y,float w)
{
    printf("float function");
}


int main()
{
    function(1.2,2.2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到一个错误错误,如..

error C2668: 'function' : ambiguous call to overloaded function
Run Code Online (Sandbox Code Playgroud)

当我尝试调用function(1.2,2)function(1,2.2)打印为" int函数 "时

请说清楚什么时候function(float y,float w)打电话?

c++ visual-c++

34
推荐指数
4
解决办法
7100
查看次数

使用float给出"调用重载函数是模糊的"错误

我正在重载该函数add(),但是当我使用float数据类型时它显示错误.但是,当我将其更改为时double,它的工作正常.为什么会float导致错误?

代码是:

#include <iostream>
using namespace std;
class students{
    private:
        int i;
        float f;

    public:
        void add(int b){
            i=b;
            cout << "First Int: " << i;
        }
        void add(float c){
            f=c;
            cout << "Second Int: " << f;
        }

};

int main(){
    students obj;
    obj.add(9);
    obj.add(5.5);
}
Run Code Online (Sandbox Code Playgroud)

错误:

In function 'int main()':
[Error] call of overloaded 'add(double)' is ambiguous
[Note] candidates are:
[Note] void students::add(int)
[Note] void students::add(float)
Run Code Online (Sandbox Code Playgroud)

c++ overloading ambiguous

6
推荐指数
1
解决办法
2339
查看次数

使用浮点字面值调用重载函数会产生"ambiguos"错误

编译以下代码时:

#include <iostream>
using namespace std;

void print(int i){
    cout << i << endl;
}

void print(float i){
    cout << i << endl;
}

int main(){
    print(5);
    print(5.5)
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

调用重载'print(double)'是不明确的.

但是,如果我改变了

void print(float i){
Run Code Online (Sandbox Code Playgroud)

void print(double i){
Run Code Online (Sandbox Code Playgroud)

代码编译.这是为什么?

c++ overloading function

4
推荐指数
1
解决办法
541
查看次数

标签 统计

c++ ×3

overloading ×2

ambiguous ×1

function ×1

visual-c++ ×1