有一個基類和一個派生類。派生公共繼承基礎。基類實現了一個友元函數bool operator ==(const Base & lhs,const Base & rhs)const; 我正在實現派生類,它也需要實現布爾運算符==(const Derive & lhs,const Derive & rhs)const;現在我的問題是,我不知道如何在我的operator ==函數中調用父母的operator ==函數。 Base類的operator ==不屬於base,所以我不能簡單地使用Base :: operator ==。謝謝。C++如何調用父母的朋友函數?
3
A
回答
5
綁定對Base
子對象的引用,並將它們與正常的操作符語法進行比較。舉個例子:
class Base { /*...*/ };
bool operator==(const Base&, const Base&);
class Derive : public Base
{
friend bool operator==(const Derive&, const Derive&);
private:
int mem_;
};
bool operator==(const Derive& d1, const Derive& d2)
{
return static_cast<const Base&>(d1) == static_cast<const Base&>(d2)
&& d1.mem_ == d2.mem_;
}
警告:像這樣的設置會悄悄切片如果不小心一個Base
比作Derive
。如果基類必須具有可比性,則可能需要設置虛擬比較機制。
+0
謝謝。它現在編譯。 – user875367
相關問題
- 1. 朋友函數C++
- 2. C++中的朋友函數
- 3. 調用朋友類的析構函數
- 4. C++的朋友函數不起作用
- 5. C++:傳遞給非朋友的朋友函數
- 6. 如何從C++中的朋友函數訪問私有函數?
- 7. 在C++中使用朋友函數
- 8. C++的朋友函數指針
- 9. C++中的朋友函數Python Boost
- 10. 如何在C++中使用普通的朋友函數?
- 11. 如何獲取用戶朋友中的每一個朋友的朋友數?
- 12. C++:朋友函數,派生類
- 13. 繼承和朋友函數在C + +
- 14. 模板類C++朋友函數
- 15. C++超載+操作員朋友函數
- 16. 如何讓朋友的朋友的名單C#.NET
- 17. 如何讓我的朋友和朋友的朋友?
- 18. 如何獲得朋友的朋友的朋友...
- 19. 父母的調用虛函數
- 20. 朋友模板函數
- 21. 朋友模板函數
- 22. 朋友模板函數
- 23. 非模板函數朋友
- 24. C++朋友類
- 25. C++使用「朋友」的
- 26. 如何使用朋友類C++
- 27. 如何獲得我朋友的FB朋友的數量?
- 28. 如何在OSX上聲明靜態C++函數作爲朋友
- 29. Graph-Traversal:我如何使用Gremlin查詢「朋友和朋友的朋友」
- 30. Facebook - 計數#朋友的朋友有
如果您發佈一些(僞)代碼,而不是嘗試描述您的代碼,那麼您的問題可能會更清晰。 –
另外,如果你有一個免費的'operator ==()',那麼說「基類已經實現它」沒有意義。 –