Pertanyaan Apa artinya "Tidak dapat membebani fungsi yang dibedakan oleh jenis pengembalian sendiri"?


Saya punya kode ini:

Di tajuk:

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

dan di sumbernya

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

    return t;
}
...

Saya telah melihat-lihat di sini di situs ini tetapi contohnya agak terlalu rumit bagi saya.

Saya belajar C ++ jadi jika seseorang dapat menjelaskan kepada saya apa arti kesalahan itu dan mengapa itu terjadi, saya akan bersyukur.


5
2018-02-09 22:45


asal


Jawaban:


Fungsinya overloading berarti memiliki banyak metode dengan nama yang sama.

Sekarang, kompilator, untuk menyelesaikan metode kelebihan beban yang benar, melihat nama metode dan argumen tetapi TIDAK pada nilai kembalian. Ini berarti jika Anda memilikinya

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

Kemudian compiler tidak dapat membedakan mereka dan tahu mana yang ingin Anda panggil di titik panggilan. Jadi dalam kasus Anda ini berarti sudah ada yang lain round metode yang menerima a float.


15
2018-02-09 22:48