我只有 C++ 的基本知识。我正在尝试在 C++ 中实现硬件抽象层(HAL)。假设我想实现这个名为 Data 的类。基于平台,数据可以通过有线或无线方式发送。
class Data() {
public Data() {
//create random data
}
public sendData() {
// send data
}
public platform_action1() {
// do some platform specific action
}
}
// My HAL
int HAL() {
Data myData;
myData.platform_action1();
myData.sendData();
return 0;
}
现在,如果我有两个平台有线和无线,我如何扩展这个类并组织我的文件,这样它就HAL()
不会改变。
我也不想要动态绑定,即使用关键字“虚拟”。在我的情况下,平台在编译时是已知的。
// 我不想这样做 :) ...
int HAL() {
Data* data = new WiredData();
data.sendData();
data = new WirelessData();
data.sendData();
}
在我的情况下,平台在编译时是已知的。
来自 C 世界,这就像填写平台特定的函数指针一样简单。
以 Boost C++ API 中的“线程”类为例。该类通过调用基于平台的 Windows 线程 API 或 Linux 线程 API 自动生成线程。这样我的 HAL 就真正独立于平台了。
- 谢谢克里斯