【CI130x 离在线】 C++一个类中调用另一个类的方法

news/2025/11/21 13:18:12/文章来源:https://www.cnblogs.com/FBsharl/p/19252190

有几种解决方案,根据你的具体需求选择:

方案1:传递CISerialPort对象引用(推荐)

在需要使用CheckConnection()的类中持有CISerialPort的引用:

cpp
// 在需要使用CheckConnection的类中
class MyOtherClass {
private:CISerialPort& serial_port_;  // 引用public:// 通过构造函数传入MyOtherClass(CISerialPort& serial_port) : serial_port_(serial_port) {}void SomeMethod() {if (serial_port_.CheckConnection()) {// 串口连接正常std::cout << "串口连接正常" << std::endl;} else {// 串口连接异常std::cout << "串口连接异常" << std::endl;}}
};// 使用示例
CISerialPort serial;
serial.Initialize("/dev/ttyUSB0", 115200);MyOtherClass other_class(serial);  // 传入串口对象
other_class.SomeMethod();

方案2:传递CISerialPort指针

cpp
class MyOtherClass {
private:CISerialPort* serial_port_;  // 指针public:MyOtherClass(CISerialPort* serial_port) : serial_port_(serial_port) {}void SomeMethod() {if (serial_port_ && serial_port_->CheckConnection()) {// 串口连接正常}}
};// 使用示例
CISerialPort serial;
MyOtherClass other_class(&serial);
other_class.SomeMethod();

方案3:使用单例模式(如果合适)

如果整个系统只需要一个串口实例:

cpp
// 在CISerialPort.h中修改
class CISerialPort {
private:static CISerialPort* instance_;  // 单例实例public:static CISerialPort* GetInstance() {if (!instance_) {instance_ = new CISerialPort();}return instance_;}// 原有方法保持不变bool CheckConnection();bool IsConnected() const;
};// 在CISerialPort.cpp中
CISerialPort* CISerialPort::instance_ = nullptr;// 在其他类中使用
class MyOtherClass {
public:void SomeMethod() {CISerialPort* serial = CISerialPort::GetInstance();if (serial->CheckConnection()) {// 使用串口}}
};

方案4:使用全局变量(简单但不推荐)

cpp
// 全局声明
extern CISerialPort g_serial_port;// 在其他类中使用
class MyOtherClass {
public:void SomeMethod() {if (g_serial_port.CheckConnection()) {// 使用串口}}
};

完整示例(推荐方案1)

MyOtherClass.h

cpp
#include "ci_serial_port.h"class MyOtherClass {
private:CISerialPort& serial_port_;public:MyOtherClass(CISerialPort& serial_port);void CheckAndUseSerial();void ProcessData();
};

MyOtherClass.cpp

cpp
#include "MyOtherClass.h"MyOtherClass::MyOtherClass(CISerialPort& serial_port) : serial_port_(serial_port) {
}void MyOtherClass::CheckAndUseSerial() {// 检查连接状态if (!serial_port_.CheckConnection()) {std::cerr << "串口连接异常,无法处理数据" << std::endl;return;}// 连接正常,继续处理ProcessData();
}void MyOtherClass::ProcessData() {// 读取串口数据auto data = serial_port_.ReadFromSerial();if (!data.empty()) {// 处理数据...}
}

main.cpp

cpp
#include "ci_serial_port.h"
#include "MyOtherClass.h"int main() {// 创建串口对象CISerialPort serial_port;// 初始化串口if (!serial_port.Initialize("/dev/ttyUSB0", 115200)) {return -1;}// 创建其他类对象并传入串口引用MyOtherClass processor(serial_port);// 使用while (true) {processor.CheckAndUseSerial();usleep(100000); // 100ms}return 0;
}

建议

  • 推荐方案1(传递引用):最安全,面向对象,易于测试

  • 如果多个地方需要访问同一个串口,考虑方案3(单例)

  • 避免方案4(全局变量),不利于代码维护和测试

选择哪种方案取决于你的具体架构设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/972035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ERP/MES与QMS的协同价值:为什么企业需要专业质量管理系统的深度解析

一、质量困局:ERP/MES的局限性 当宝马汽车80%的客户投诉源于供应商来料质量问题时,这暴露出一个行业共性:ERP/MES系统虽已普及,但质量管控仍存在严重短板。以某汽车零部件企业为例,其SAP ERP质量模块仅能实现数据…

PostgreSQL技术大讲堂 - 第111讲:浅谈向量数据库pgvector的使用

PostgreSQL从入门到精通系列课程,100+节PG技术讲解,让你从小白一步步成长为独当一面的PG专业人员,点击这里查看部分免费视频内容。第111讲:浅谈pgvector的使用内容介绍:1、什么是向量数据库2、什么是向量索引3、有…

人大金仓kingbase数据库大小写敏感设置

在不需要备份数据库的情况下 1、停止数据服务,一般在data目录 在kingbase的安装目录,在/kingbase/Server/bin 中运行,./sys_ctl -D /kingbase/data stop2、重新初始化数据库(启用大小写不敏感) 执行命令, ./ini…

详细介绍:数据结构八大排序:堆排序-从二叉树到堆排序实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年11月最新推荐!云南旅游旅行社口碑排行榜权威发布,帮你选靠谱服务商避坑指南

云南以多元民族文化与瑰丽自然景观成为旅游热门地,但旅游市场中旅行社质量良莠不齐,隐性消费、行程缩水、服务断层等问题频发:低价团暗藏强制购物陷阱,承诺的非遗体验沦为走马观花,山区线路用车不合规存安全隐患。…

大企业数字化项目失败困局与破局之道

一、大企业数字化项目的高失败率根源 大企业数字化项目失败率居高不下,核心在于其组织特性与数字化建设模式的矛盾。部门复杂、需求多元、人员众多、想法各异的企业生态,必然导致定制开发成为唯一选择。这种模式如同…

2025年11月新推荐!云南旅游旅行社口碑排行榜,权威榜单助选靠谱服务商

云南以多元民族文化与瑰丽自然景观成为旅游热门地,但旅游市场中旅行社质量良莠不齐,隐性消费、行程缩水、服务断层等问题频发:低价团暗藏强制购物陷阱,承诺的非遗体验沦为走马观花,山区线路用车不合规存安全隐患。…

2025 年 11 月实木定制地板厂家推荐排行榜,纯实木地板,原木地板,定制木地板,多层实木地板,环保实木地板公司推荐

2025年11月实木定制地板厂家推荐排行榜 实木定制地板作为高端建筑装饰材料,近年来在商业空间、高端住宅和公共建筑领域的应用日益广泛。随着消费者对环保性、个性化和品质要求的提升,实木定制地板行业正经历从标准化…

评估质量管理软件(QMS)的试金石——试用、试用、还是试用!

近年来,企业信息化建设浪潮席卷全球,但令人遗憾的是,许多项目最终以失败或未达预期告终。面对这一困境,如何确保数字化投入真正产生价值?答案或许简单却至关重要:试用、试用、还是试用! 一、为何必须试用? 想象…

2025 年 11 月机床厂家推荐排行榜,数控机床,智能数控机床,双头对接机床,6150机床,线轨机床,硬轨机床,重型机床公司推荐

2025年11月机床厂家推荐排行榜:数控机床与智能装备选购指南 一、行业背景与发展趋势 随着制造业向智能化、精密化方向快速发展,机床作为工业母机的地位日益凸显。当前,数控机床、智能数控机床等高端装备已成为制造业…

2025 年 11 月硬轨机床厂家推荐排行榜:高刚性硬轨机床,重切削硬轨机床,精密硬轨机床,数控硬轨机床公司推荐

2025 年 11 月硬轨机床厂家推荐排行榜:高刚性硬轨机床,重切削硬轨机床,精密硬轨机床,数控硬轨机床公司推荐 在制造业转型升级的浪潮中,硬轨机床作为工业母机的重要组成部分,其性能直接影响着加工精度和生产效率。…

重构lazarus时出现Error: linker: pipe: No such file or directory的解决方法

重构lazarus时出现Error: linker: pipe: No such file or directory的解决方法最近发现重构Lazarus时出现Error: linker: pipe: No such file or directory,虽然不影响重构,但红色看起来很不顺眼,查了半天,发现是m…

function sql的版本兼容性如何

SQL(结构化查询语言)的版本兼容性是一个复杂的话题,因为它涉及到多个方面,包括语法、功能、性能以及数据库管理系统的实现等。以下是一些关于SQL版本兼容性的关键点:语法兼容性:不同的SQL版本可能会引入新的语法…

Java 分哪些版本 都有什么不同

Java 的版本主要分为 Java SE(Standard Edition)、Java EE(Enterprise Edition)、Java ME(Micro Edition) 三个核心版本,以及后来衍生的 Java 9+ 模块化版本 和 OpenJDK 等分支。以下是详细介绍:Java SE(Stan…

QMS软件评估:从制造企业实践看标准产品的多维评估框架

引言:评估的"主观性陷阱"当宁波水表的质量总监坦言"系统刚导入时怨声载道,如今却离不开"时,这揭示了一个制造企业普遍面临的困境:QMS软件评估从来不是非黑即白的判断题,而是涉及角色、时期、…

2025 年 11 月重型机床厂家推荐排行榜,龙门铣床,落地镗铣床,数控立式车床,深孔钻镗床公司推荐,专业制造与高效加工口碑之选

2025 年 11 月重型机床厂家推荐排行榜,龙门铣床,落地镗铣床,数控立式车床,深孔钻镗床公司推荐,专业制造与高效加工口碑之选 重型机床作为现代制造业的核心装备,在航空航天、能源设备、重型机械等关键领域发挥着不…

2025AI直播服务公司品质榜TOP5:智能交互技术,高清画质工艺解析

随着人工智能技术的飞速发展,AI直播作为一种新兴的直播形式,凭借其低成本、高效率、个性化等优势,受到了越来越多企业的青睐。本榜单基于技术实力、服务质量、市场口碑等多维度,结合行业发展趋势和用户反馈,对202…

2025年云南短视频制作公司品质榜单TOP5评测:AI协同生产流程,口碑数据拆解

在数字经济加速渗透的当下,短视频已成为企业品牌传播与获客引流的核心引擎。据中国信息通信研究院数据显示,2024年短视频营销市场规模突破3000亿元,企业级短视频服务需求同比增长45%。面对鱼龙混杂的市场环境,选择…

2025 年 11 月 6150 机床厂家推荐排行榜,普通车床,数控车床,精密机床,重型机床公司推荐,实力与口碑双重保障

2025 年 11 月 6150 机床厂家推荐排行榜,普通车床,数控车床,精密机床,重型机床公司推荐,实力与口碑双重保障 6150 机床作为工业制造领域的核心装备,在普通车床、数控车床、精密机床和重型机床等多个细分领域发挥…

2025 年 11 月线轨机床厂家推荐排行榜,精密线轨机床,高速线轨机床,数控线轨机床,重型线轨机床公司推荐

2025年11月线轨机床厂家推荐排行榜:精密、高速、数控与重型线轨机床全解析 在制造业转型升级的浪潮中,线轨机床作为高精度加工的核心装备,其性能直接决定了生产效率和产品质量。随着工业4.0和智能制造的深入推进,市…