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