c++ get/set/subscribe 接口设计
时间: 2023-08-28 17:40:01 浏览: 150
C++ API 设计
4星 · 用户满意度95%
在C++中,可以使用类和成员函数来实现get、set、subscribe接口的设计。
下面是一个示例类的设计:
```c++
class Device {
public:
Device(int id);
double getTemperature();
void setTemperature(double temperature);
void subscribeTemperature(std::function<void(double)> callback);
private:
int id_;
double temperature_;
std::vector<std::function<void(double)>> callbacks_;
};
Device::Device(int id) : id_(id), temperature_(0.0) {}
double Device::getTemperature() {
return temperature_;
}
void Device::setTemperature(double temperature) {
temperature_ = temperature;
for (auto &callback : callbacks_) {
callback(temperature_);
}
}
void Device::subscribeTemperature(std::function<void(double)> callback) {
callbacks_.push_back(callback);
}
```
该类实现了一个Device设备的温度读取、修改和订阅功能。其中,getTemperature()函数用于获取当前温度值,setTemperature()函数用于修改温度值,并通知所有订阅者,subscribeTemperature()函数用于订阅温度值的变化,并注册回调函数。使用该类时,可以按照以下方式进行调用:
```c++
Device device(1);
device.subscribeTemperature([](double temperature) {
std::cout << "Temperature changed: " << temperature << std::endl;
});
device.setTemperature(25.4);
double temperature = device.getTemperature();
```
上述代码中,首先创建了一个Device对象,并注册了一个订阅温度变化的回调函数。然后,调用setTemperature()函数修改温度值,并会触发回调函数。最后,调用getTemperature()函数获取当前温度值。
阅读全文