【C++】問題解決:Cannot overload functions distinguished by return type alone

問題描述

碰到以下內容,問題的解決方式

Cannot overload functions distinguished by return type alone

問題來源

我寫範例程式碰到的問題

解決方法

簡單來說是 C++ function 使用了 overload,
而這個 overload 造成了 compiler 混淆的行為,
這樣講我也覺得很不好懂,不如我們直接來看例子XDD

範例

int foo(float a);
float foo(float a);

現在問題來了,請問以下的 function call 會使用上面的哪一個呢?

float a = 1.0;
foo(a);

很難對不對,實際上就是沒有答案XDDD,
因為 complier 就是不知道要用哪一個。

解決範例

解決方法:就不要 overload 了吧…
另外也建議可以在 function naming 多下功夫

  • 例如:
int float_to_int(float a);
float float_to_float(float a);

Reference

Licensed under CC BY-NC-SA 4.0