我正在为我们公司的设备开发一个硬件库,其中包括需要访问摄像头和不同类型的照明。基本硬件接口的设计类似于
public ref class IHardware abstract {
protected:
ICamera* camera;
ILight^ light;
...
public:
IHarware();
...
virtual bool acquireImage() abstract;
...
};
此处,ICamera
和ILight
是相应硬件部分的接口。
我需要开发的DLL包含上面的接口以及我们标准设备的IHardware
特化,让它被称为SHardware
。该设备的特征化也适用于ICamera
和ILight
,即SCamera
和SLight
。
由于我想使用RAII,SHardware
的构造函数看起来像
SHardware::SHardware : IHardware() {
...
camera = new SCamera();
camera->Init();
light = gcnew SLight();
light->Init();
...
}
现在,假设我想使用该SHardware类进行进一步的特殊化,例如:对于一个名为NHardware
的类。我的NCamera
课程来自SCamera
和NLight
来自SLight
。我的问题是如何实现NHardware
的构造函数;如果它像
NHardware::NHardware() : SHardware() {...}
camera
和light
已在SHardware()
中初始化,因此在创建delete
和NCamera
之前,我必须先NLight
个NHardware
对象,这对我来说似乎不正确。当然,我可以以某种方式在单独的虚函数中提取相机和照明初始化,并在SHardware
类中覆盖它,但是当调用SHardware
构造函数时,{{1}}初始化也不是功能先用?
我相信这是一个相当简单的解决方案的常见问题,但是现在我只是没有得到它,所以任何帮助都表示赞赏!谢谢,
Matz的