【发布时间】:2019-04-01 07:33:23
【问题描述】:
我对 C++ OOP 比较陌生,所以请耐心等待。
我正在使用针对专用硬件(PCIE 模块)实现的 CAN 总线协议的第 3 方驱动程序。它带有一个类,允许您实例化 can_read 和 can_write 对象。
这个库在我自己的程序中使用,我有一个类和上述类的 7 个实例,它们需要访问在主文件的全局范围内定义的 can_write 对象。
我遇到的问题是 can_write 对象。作为一个驱动程序级库,它从can_write 对象访问相同的内存地址。如果我有一个按值获取 can_writer 的成员函数,则每当访问它时出现“双重释放或损坏”错误,程序就会崩溃。
我现在通过引用传递can_writer 对象(参数为“CanClass &a”),它似乎有效,但我不确定这是一种好的做法还是传统的做法。这是正确的做法吗?如果没有,正确的方法是什么?任何参考资料甚至是简短的解释都会非常有帮助!
编辑:我必须避免创建can_writer 的副本,因为它会读取内存损坏,因此我的Class Foo 的所有7 个实例都需要访问完全相同的can_write 实例。
【问题讨论】:
标签: c++ class object driver hardware