在我問我的問題之前:是的,這是大學的一項任務。繼承比較運算符而不能比較派生類與對方
該分配非常簡單:實施具有附加功能的惠斯特紙牌遊戲。助理希望我們繼承「繼續」(這是我第二次跟隨這個過程,所以我知道它是什麼),並告訴我們使用以下卡片類:創建一個基類卡,從中派生出來根據他們所擁有的套裝(心臟,鑽石,...)繼承4類。
我覺得這很奇怪我在這裏使用繼承(因爲這些類將有.fSuit
數據成員反正),我們還沒有看到virtual
還,所以在這裏我們不會使用它。這並不難,但我遇到的問題是:我們需要派生operators
來比較卡片,但派生類不能相互比較(編譯器應該根據助手丟出錯誤) 。我第一次使用friend bool operator<(Card&, Card&)
,但我知道朋友函數不以任何方式與派生類相關聯,派生類的處理就像它們是基類一樣。
我該如何讓自己的代碼按照他想要的方式工作?我知道我可以停止使用friend
並使運算符成爲我的Card類的一部分,但我仍然可以將派生類與其他類進行比較。我錯過了什麼嗎?提前致謝。
ps:如果它不是以任何方式爲它編碼的解決方案,我可能只是在比較之前檢查我的卡類的運算符部分中的套裝。
編輯:他還希望一次對所有派生類進行一個運算符的def/decl工作。爲每個派生類創建一個朋友操作符也可能是一個可能的解決方案。
你的代碼像atm是什麼? – didierc
http://pastebin.com/XPkWGHmA適用於現在對頭文件感興趣的人。 – Shiouen