我寫一些C++代碼,需要測試的字符串和字符平等,爲簡單起見,我想考慮正破折號( 0x96
)和m-dash(0x97
)字符相同。C++如何調用操作的標準形式從重載運算符中
我的第一反應是重新定義平等運營商,並開始代碼,但後來遇到了一個問題:
inline bool operator==(char lhs, char rhs) {
if (lhs == 0x96 && rhs == 0x97) return true; // works fine
else if (lhs == 0x97 && rhs == 0x96) return true; // works fine
else return lhs == rhs; // infinite recursion...
}
在該函數的最後一行,最好我想能夠調用相等運算符的「舊」形式,類似於派生類如何能夠調用基類的函數版本。
我想知道這是否可能在C++?如果沒有,我假設我應該將上面的代碼提取到一個單獨的函數中,然後調用該函數而不是使用運算符。
有道理,所以你建議定義一個單獨的功能,並只在我需要它的具體地方使用它? –
絕對如此。編寫你自己的稱爲'funnyEquals(char,char)'的函數。 – Bathsheba
我不認爲標準C++允許爲內置插件重載運算符。 – juanchopanza