历史上的今天
今天是: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后,父类的同名函数就不再隐藏,可以直接调用了。
史海拾趣
|
大家应该都有一些了解,对于无线Mesh网络。它是一种具有多跳性和传统无线性能的结合体,是一种新的无线网络。它的诞生,给我们的无线带来了新的理念。那么它具体是新在哪里呢?本文主要针对的是无线Mesh网络结构进行的具体介绍。希望通过此文,能让 ...… 查看全部问答> |
|
WinCE6系统suspend/resume回来之后立刻进入systemidle 用touch点击开始菜单进入suspend,然后按Power Button使系统resume回来之后,系统会先进入resume状态,紧接着进入systemidle状态,backlight和display都被关掉,需要点一下屏幕才能再进入on状态,这是怎么回事?谢谢… 查看全部问答> |
|
大家好,我想问一下CE系统下,如何显示电池电量的百分比。我硬件平台是S3C2440,我用它自身带的ADC读取电池电量在计算可以吗?再就是加载电池监测芯片。除了这些还有其它什么办法吗?请大家踊跃发言,谢谢!… 查看全部问答> |
|
请教各位达人: 我想测试一下芯片中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 ...… 查看全部问答> |




