我有一個名爲FileProc的類,它運行File IO操作。在一種情況下我已經聲明兩個函數(這是子功能,運營商=功能),都果斷地不同:C++歧義過載問題
const bool WriteAmount(const std::string &Arr, const long S)
{
/* Do some string conversion */
return true;
}
const bool WriteAmount(const char Arr[], unsigned int S)
{
/* Do some string conversion */
return true;
}
如果我做一個「字符的字符串」來WriteAmount呼叫時,報告多義性錯誤 - 說它在char字符串的WriteAmount和std :: string的WriteAmount之間混淆。我知道底下發生了什麼 - 它試圖使用std :: string構造函數將char字符串隱式轉換爲std :: string。但我不希望這發生在WriteAmount(IE我不希望在函數內發生任何隱式轉換 - 給定每個角色針對每個角色進行優化)的情況下發生。
我的問題是,爲了保持一致性,不改變函數格式(IE不改變參數的數量或它們出現的順序),而且不改變標準庫,是否有防止相關函數中的隱式轉換?
我忘了添加,最好不要使用類型轉換,因爲這對函數調用來說是單調乏味的,而不是用戶友好的。
所以你想改變一些東西而不改變任何東西?你如何看待它的可能性? – Dani