小编Den*_* K.的帖子

如何在Visual C++ 2013中将函数对象作为参数传递?

我试图将函数<>对象作为另一个方法的参数传递,以便灵活地从列表中获取元素.这是我的代码:

libusb_device * UsbKeyboard::GetSpecifiedDevice(function<bool(libusb_device *)> pred)
{
    if (_usbDevices == nullptr) return nullptr;
    int i = 0;
    libusb_device *dev = nullptr;
    while ((dev = _usbDevices[i++]) != NULL)
    {
        if (pred(dev))
            return dev;
    }

    return nullptr;
}


libusb_device * UsbKeyboard::GetHidDevice()
{
    function<libusb_device *> pred = [&](libusb_device *dev) -> bool  {
        struct libusb_device_descriptor desc;
        int r = libusb_get_device_descriptor(dev, &desc);
        if (r >= 0)
            return desc.bDeviceClass == LIBUSB_CLASS_HID;
    };

    return GetSpecifiedDevice(pred);
}
Run Code Online (Sandbox Code Playgroud)

编译错误位于此代码的第一行:

     error C2027: use of undefined type 'std::_Get_function_impl<_Fty>'
1>          with
1> …
Run Code Online (Sandbox Code Playgroud)

c++ function visual-studio-2013

0
推荐指数
1
解决办法
274
查看次数

标签 统计

c++ ×1

function ×1

visual-studio-2013 ×1