历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2020年03月11日 | STM32开发笔记73: C++中子类调用父类同名函数的处理方法

2020-03-11 来源:eefocus

单片机型号:STM32L053R8T6


1、问题

父类有1方法:Enable_RS485,如下所示:


class CUart

{

public:

uint8_t u8_UartNumber; //端口号1-8

uint32_t u32_BaudRate; //波特率

uint8_t u8_Parity; //效验位

CC0 C0; //485控制引脚C0

CC1 C1; //485控制引脚C1

UART_HandleTypeDef hUART;

uint8_t u8_UartReceiveBuffer[1];

public:

CUart(uint8_t u8_UartNumber, uint32_t u32_BaudRate, uint8_t u8_Parity);

void Init(uint8_t u8_UartNumber, uint32_t u32_BaudRate, uint8_t u8_Parity);

void Enable_RS485(GPIO_TypeDef* C0_Port, uint16_t C0_Pin, GPIO_TypeDef* C1_Port, uint16_t C1_Pin);

void SendDataPrimitive(uint8_t* pData, uint16_t u16_Size);

void SetBaudRate(uint32_t u32_BaudRate);

void Set_RS485(uint8_t u8_Mode);

};


子类有其同名的方法,如下所示:


class CUartCommunication:public CMiniUART

{

public:

CUartCommunication(void);

void Enable_RS485(void);

};

并且子类还需调用父类的同名方法,如下所示:


void CUartCommunication::Enable_RS485(void)

{

this->Enable_RS485(PORTA, PIN1, PORTC, PIN12);

}

如果按照上述方法编写程序,则编译时不通过的,原因在于父类的同名方法被隐藏。


2、解决

可以使用using解决当前问题,如下所示:


class CUartCommunication:public CMiniUART

{

public:

CUartCommunication(void);

using CUart::Enable_RS485;

void Enable_RS485(void);

};


使用using后,父类的同名函数就不再隐藏,可以直接调用了。

推荐阅读

史海拾趣

Amaze Electronics Pte Ltd公司的发展小趣事

为了支撑公司的持续发展,Amaze Electronics高度重视人才培养。公司建立了完善的培训体系,为员工提供丰富的培训资源和学习机会。同时,公司还积极引进优秀人才,为研发团队注入新的活力。这些举措使得公司的研发团队不断壮大,为公司的技术创新和业务发展提供了有力保障。

American Power Management Inc公司的发展小趣事

为了进一步提升竞争力,APMI开始实施国际化发展战略。公司积极开拓海外市场,与国际知名电子制造商建立合作关系。同时,APMI还加强了与国际同行的技术交流与合作,吸收借鉴先进的管理经验和技术成果。通过国际化发展,APMI不仅拓宽了市场渠道,还提升了公司的国际影响力。

长江连接器(CJT)公司的发展小趣事

随着技术的不断积累和市场的不断扩大,长江连接器开始积极拓展国内外市场。公司通过与国内外知名企业的合作,将产品广泛应用于消费类电子、电气电子、薄膜开关、LED显示器屏/灯饰、家用电器、电脑及电脑周边、通讯设备等领域。同时,长江连接器注重品牌形象的塑造和推广,通过参加各类行业展会、举办技术交流会等方式提升品牌知名度和美誉度。

安森德(Ascend)公司的发展小趣事

随着公司业务的不断扩展,安森德对资金的需求也日益增加。在这个关键时刻,公司成功获得了数千万人民币的战略投资。这笔资金为公司的研发、生产和市场拓展提供了有力支持。在融资的助力下,安森德加快了规模扩张的步伐,先后在多个城市设立了研发中心和办事处,进一步提升了公司的研发实力和市场覆盖能力。

ADTech公司的发展小趣事

随着企业规模的扩大和影响力的提升,AdTech公司开始更加关注自身的社会责任和可持续发展。公司积极参与公益活动,支持教育、环保等事业,为社会的发展做出了积极贡献。同时,公司还注重环境保护和资源利用,通过采用环保材料和节能技术,降低生产过程中的能耗和排放。这些举措不仅提升了公司的社会形象,也为其实现长期可持续发展奠定了坚实基础。

这些故事是基于对AdTech公司可能发展路径的假设和推测而创作的,并不代表该公司的实际发展情况。实际上,每个公司的发展都是独特而复杂的,受到多种因素的影响。如需了解更多关于AdTech公司的真实发展情况,建议查阅相关新闻报道、行业报告或公司年报等权威资料。

歌普(GEPU)公司的发展小趣事

AdTech公司在成立之初,以其完整的传统半导体器件工艺在通信、激光医疗和激光防卫领域获得了广泛认可。然而,随着技术的不断进步和市场的变化,公司管理层意识到需要转型以维持竞争优势。2008年,经过三年的技术储备,AdTech决定将原有的光电探测器业务剥离,转而专注于量子级联激光器(QCL)的研发和生产。这一决策使公司能够专注于前沿技术,逐渐在QCL领域建立了领先地位,成为美国各大QCL激光设备的核心供应商。

问答坊 | AI 解惑

求助,Proteus仿真SD卡 mmc里面加载的文件是怎么生成的啊 ?

求助,Proteus仿真SD卡 mmc里面加载的文件是怎么生成的啊 ?…

查看全部问答>

无线Mesh网络结构详解

大家应该都有一些了解,对于无线Mesh网络。它是一种具有多跳性和传统无线性能的结合体,是一种新的无线网络。它的诞生,给我们的无线带来了新的理念。那么它具体是新在哪里呢?本文主要针对的是无线Mesh网络结构进行的具体介绍。希望通过此文,能让 ...…

查看全部问答>

WinCE6系统suspend/resume回来之后立刻进入systemidle

用touch点击开始菜单进入suspend,然后按Power Button使系统resume回来之后,系统会先进入resume状态,紧接着进入systemidle状态,backlight和display都被关掉,需要点一下屏幕才能再进入on状态,这是怎么回事?谢谢…

查看全部问答>

CE系统下如何实现显示电池电量百分比

大家好,我想问一下CE系统下,如何显示电池电量的百分比。我硬件平台是S3C2440,我用它自身带的ADC读取电池电量在计算可以吗?再就是加载电池监测芯片。除了这些还有其它什么办法吗?请大家踊跃发言,谢谢!…

查看全部问答>

msp430单片机的串口通信问题

请问各位大侠,单片机在接收中断中是一次接收一帧长度的数据么?还是分多次接收,每次大于一个字节,抑或每次只接收一个字节?…

查看全部问答>

请教UART控制器中Modem功能的测试(急)

请教各位达人: 我想测试一下芯片中UART的Modem功能,请问应该如何测试?测试环境应该如何搭建啊?是不是需要通过串口和Modem相连?AT指令怎么测试?是通过串口发给Modem吗? 谢谢! …

查看全部问答>

求教CE5.0 MFC应用程序,HTML文件浏览,添加Microsoft web浏览器控件,程序不能运行。为什么?

使用VS2005 MFC开发MTML文件浏览器,使用Microsoft web浏览器控件,可以正常编译通过,放入WINCE5.0机器设备,不能启动。 提示错误如下: Debug assertion Failed; PROGRAM:程序路径。 F:\\SP\\vctools\\vc7libsce\\ship\\atlmft\\scr\\mfc\\oc ...…

查看全部问答>

救命啊,有人有制作LED控制卡的资料吗?毕业设计。。

有制作LED控制卡的资料吗?毕业设计。。谢谢了!!!!!!!能发到我邮箱吗?371340158@qq.com  不甚感激!…

查看全部问答>

谁能提供个轮式机器人的控制原理和相关程序

最近刚开始搞科技创新的活动,想弄个轮式搬运机器人,不知道各路大侠谁有资料分享一下,小弟不胜感激!!…

查看全部问答>