C++ 单例模式实现:VirtualKeyboard 类
这段代码实现了一个单例模式,其中 VirtualKeyboard 类代表一个虚拟键盘。
第一行代码定义了一个静态成员变量 instance_,类型为 std::unique_ptr<VirtualKeyboard>,初始值为 nullptr,表示尚未创建实例。
GetInstance() 函数返回一个 VirtualKeyboard 指针。如果 instance_ 未被创建,则调用 VirtualDevice::FindDeviceNode() 函数查找虚拟键盘的设备节点。如果找到节点,则使用该节点创建一个 VirtualKeyboard 实例,并将该实例的指针移动到 instance_ 中,确保 instance_ 中只有一个实例。最后返回 instance_ 的指针。
需要注意的是,由于 instance_ 是一个 unique_ptr,在返回 instance_ 指针时需要调用 get() 函数获取其指针。
代码示例:
std::unique_ptr<VirtualKeyboard> VirtualKeyboard::instance_ = nullptr;
VirtualKeyboard *VirtualKeyboard::GetInstance()
{
if (!instance_) {
std::string node;
if (VirtualDevice::FindDeviceNode(VirtualKeyboardBuilder::GetDeviceName(), node)) {
auto vKeyboard = std::make_unique<VirtualKeyboard>(node);
if (vKeyboard != nullptr && vKeyboard->IsActive()) {
instance_ = std::move(vKeyboard);
}
}
}
return instance_.get();
}
原文地址: https://www.cveoy.top/t/topic/nN57 著作权归作者所有。请勿转载和采集!