我创建了一个标准结构的"智能变体" - struct canmsg系统提供的,从can设备读取该类型的数据,我经常处理这样的帧.
现在,为了更容易处理它们,我创建了一个子类:class TCanFrame : public canmsg.它没有任何额外的属性,但它有一堆方法 - 一个友好的构造函数,用于从头创建框架,命令和数据,getter和setter,读取和设置不同的属性"上面的抽象层"(例如通道子地址编码)在数据中).
从一个实例构造TCanFrame类型的对象的最佳方法是struct canmsg_t什么?我可以做一个从的memcpy &source来this?或者我需要逐个字段地复制它吗?或者使用"哑"创建一个整洁的TCanFrame实例的其他技巧canmsg或者我可以让复制构造函数接受父类吗?
如果您不添加任何数据成员,并且不需要访问任何受保护的成员canmsg,我认为您不应该创建派生类.相反,您可以添加自由函数以在命名空间中执行额外功能canmsg,然后将它们与普通canmsg对象一起使用.你可以阅读更多关于一个类的"非成员接口"以及为什么它在例如Scott Meyers和Herb Sutter的这些文章中是一件好事.
另外请注意,如果你创建一个派生类和canmsg没有虚析构函数,你可以很容易地通过调用碰到不确定的行为delete在canmsg*实际上指向一个TCanFrame对象.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |