有一个基类和一个派生类。派生公共继承基础。基类实现了一个友元函数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 ==()',那么说“基类已经实现它”没有意义。 –