解决友元类(friend class)无法继承的问题

简介:

解决友元类(friend class)无法继承的问题

 

友元声明friend class是无法继承的。举例说明:class A声明class B为其友元类,也就是说class A授予class B访问class A的所有包括私有成员在内的所有成员。如果class C 继承class B.那么class C是不具备这种特权的。

 

 

但是如果我想在class C中访问class A的某个私有或者保护成员函数怎么办?

我们可以把工作交给父类。

 

#include <iostream> using namespace std; class B; class A { friend B; public: A(){}; ~A(){} protected: void Operation(){ cout << "Hello, I am here." << endl; } private: }; class B { public: B(){}; ~B(){}; virtual void Operate() { a.Operation(); } private: A a; }; class C: public B { public: C(){} ~C(){} private: }; int main(void) { C c; c.B::Operate();//这里显示的调用父类的函数 }

目录
相关文章
|
程序员 API 数据库
【Cmake工程 库相关教程 】深入理解CMake工程C/C++ 库管理技巧
【Cmake工程 库相关教程 】深入理解CMake工程C/C++ 库管理技巧
322 1
|
Web App开发 编解码 安全
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
【WebRTC 入门教程】全面解析WebRTC:从底层原理到Qt和FFmpeg的集成应用
6419 2
|
1月前
|
小程序 JavaScript 前端开发
基于微信小程序的校园外卖订餐配送系统
本研究针对校园外卖配送效率低、体验差等问题,设计并实现基于微信小程序的智能配送平台。融合SSM、Vue、uni-app等技术,优化点餐、支付与配送流程,提升师生用餐体验与餐饮管理效率。
|
NoSQL API Redis
最佳实践|如何使用c++开发redis module
本文将试着总结Tair用c++开发redis module中遇到的一些问题并沉淀为最佳实践,希望对redis module的使用者和开发者带来一些帮助(部分最佳实践也适用于c和其他语言)。
76922 0
|
自然语言处理 机器人 Go
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
813 0
|
存储 安全
atomic_int
atomic_int
632 0
|
安全 算法 程序员
【C++智能指针 空指针判断】深入探索C++智能指针:nullptr与empty的微妙差异
【C++智能指针 空指针判断】深入探索C++智能指针:nullptr与empty的微妙差异
652 1
|
Dart Android开发 iOS开发
flutter 创建项目、运行项目、项目目录
flutter 创建项目、运行项目、项目目录
500 0
|
NoSQL Redis
redis中处理带有空格的key
redis中处理带有空格的key
625 0
redis中处理带有空格的key
|
前端开发 小程序 API
【微信小程序】使用 Promise、async 和 await 将异步API 改写为同步
【微信小程序】使用 Promise、async 和 await 将异步API 改写为同步
531 0