有一個基類和一個派生類。派生公共繼承基礎。基類實現了一個友元函數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. 調用朋友類的析構函數
- 2. C++:傳遞給非朋友的朋友函數
- 3. 如何從C++中的朋友函數訪問私有函數?
- 4. 如何獲取用戶朋友中的每一個朋友的朋友數?
- 5. 繼承和朋友函數在C + +
- 6. C++:朋友函數,派生類
- 7. 模板類C++朋友函數
- 8. 如何獲得朋友的朋友的朋友...
- 9. 非模板函數朋友
- 10. 朋友模板函數
- 11. C++朋友類
- 12. C++使用「朋友」的
- 13. 如何獲得我朋友的FB朋友的數量?
- 14. Graph-Traversal:我如何使用Gremlin查詢「朋友和朋友的朋友」
- 15. 如何在OSX上聲明靜態C++函數作爲朋友
- 16. 模板的朋友功能:錯誤的函數調用
- 17. 如何調用祖父母的構造函數(因爲父母的構造函數沒有定義)?
- 18. 如何獲得使用活動記錄的朋友的朋友?
- 19. 調用C++中標題中定義的朋友函數的功能
- 20. Facebook朋友的朋友
- 21. SQL表爲朋友,共同朋友,朋友朋友等
- 22. C++朋友繼承
- 23. C++ - 朋友功能
- 24. 如何獲取所有朋友的朋友,這是朋友在facebook的朋友列表
- 25. 如何從派生類中調用重載的父cout朋友類?
- 26. 一個類的朋友函數
- 27. 在php中的朋友函數?
- 28. 模板定義中的朋友函數
- 29. 使用facebook api訪問朋友的朋友的數據
- 30. 如何從twitter使用Asp.NET檢索朋友朋友列表?
如果您發佈一些(僞)代碼,而不是嘗試描述您的代碼,那麼您的問題可能會更清晰。 –
另外,如果你有一個免費的'operator ==()',那麼說「基類已經實現它」沒有意義。 –