这段代码实现了一个单例模式,其中 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();
}
C++ 单例模式实现:VirtualKeyboard 类

原文地址: https://www.cveoy.top/t/topic/nN57 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录