Den*_* K. 0 c++ function visual-studio-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> [
1> _Fty=libusb_device *
1> ]
1> usbkeyboard.cpp(111) : see reference to class template instantiation 'std::function<libusb_device *>' being compiled
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(551): error C2504: 'type' : base class undefined
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(554): error C2027: use of undefined type 'std::_Get_function_impl<_Fty>'
1> with
1> [
1> _Fty=libusb_device *
1> ]
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(554): error C2146: syntax error : missing ';' before identifier '_Mybase'
1>c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional(554): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Run Code Online (Sandbox Code Playgroud)
它说函数<>的基类是未定义的.为什么?
你输错了 function<libusb_device *> pred
它应该是
function<bool(libusb_device *)> pred
Run Code Online (Sandbox Code Playgroud)
或者干脆 auto pred
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |