我有一個C++類,我已經超負荷內部限定一對純虛函數過載。 代碼段如下::功能與「uint32_t的」&uint64_t中」在純虛函數在C++中唯一的變化
virtual uint64_t Abc::GetValue()=0;
virtual uint32_t Abc::GetValue()=0;
這裏,在功能上簽名,唯一的區別是GETVAL()「uint32_t
」 &「uint64_t
」的返回類型..
它拋出編譯錯誤,這不能超載。
Plz幫助我解決這個問題。
我有一個C++類,我已經超負荷內部限定一對純虛函數過載。 代碼段如下::功能與「uint32_t的」&uint64_t中」在純虛函數在C++中唯一的變化
virtual uint64_t Abc::GetValue()=0;
virtual uint32_t Abc::GetValue()=0;
這裏,在功能上簽名,唯一的區別是GETVAL()「uint32_t
」 &「uint64_t
」的返回類型..
它拋出編譯錯誤,這不能超載。
Plz幫助我解決這個問題。
您不能基於返回類型進行重載,只能根據參數類型進行重載。這是因爲根據調用函數的方式來選擇超載,並且函數調用沒有指定期望的返回類型。
選項包括:
在C++ onverloading上只做參數的功能不在返回類型。所以你重新定義了一個錯誤的功能。
所以,如果你做'abc.GetValue()',它應該調用哪一個? –
只有在返回類型中,關於差異的整個事情並不會造成超負荷......是的,那就是現在正在咬你。 – WhozCraig
[通過返回類型重載函數?]的可能重複(http://stackoverflow.com/questions/442026/function-overloading-by-return-type) – ecatmur