取消API使用的调用
Callbacks to decouple API usage
我正在尝试创建一个简单的静态类库,以将WebSocket的使用与我的其余代码解耦。创建它将使我能够轻松地切换WebSocket库(我目前正在使用cpprestsdk(,而无需根据不久的将来将执行的基准测试来更改我的代码(或其底层逻辑(。
在下面的代码中,我试图对openConnection()
:进行回调
class WebSocket
{
websocket_callback_client wsClient;
void openConnection(void (*ptr)(std::string response),std::string _url)
{
wsClient.connect(_url).then([](){ });
wsClient.set_message_handler([](websocket_incoming_message msg)
{
ptr(msg.extract_string().get());
});
}
};
这看起来显然是错误的,因为编译器抛出了一个错误:
未捕获"tr">
但这正是我努力实现的目标。
我该怎么做?
正如编译器所说,您没有在试图使用它的lambda中捕获ptr
。这是因为您将lambda的捕获列表设置为空。您需要在lambda的捕获列表中指定ptr
:
wsClient.set_message_handler(
[ptr](websocket_incoming_message msg)
{
ptr(msg.extract_string().get());
});
或者,让lambda自己计算出需要捕获ptr
:
wsClient.set_message_handler(
[=](websocket_incoming_message msg)
{
ptr(msg.extract_string().get());
});
相关文章:
- 使用Qt框架在c ++类中创建API调用
- 调用 Win32 API 函数时未定义的引用
- 程序在对mouse_event的 Windows API 调用中冻结
- 使用 Node.js N-API 调用 C 函数时,不会显示预期的输出
- 同时调用 ASIO 对象的 API 是否安全?
- 取消API使用的调用
- Lua C API 自定义打印函数,在字符串中传递空格时不调用
- 在 MySQL 连接器C++ API 中使用一个函数调用执行多个查询的正确方法是什么?
- 为什么创建进程 API 调用会导致内存访问冲突?
- 如何使用 Win32 API 从 Excel VBA 中的非"Single-Threaded Apartment"线程调用 InternetGetProxyInfo
- 引发访问冲突的 Win32 API 调用
- 父进程中的挂钩 api 调用
- 如果在 DLL 和调用应用程序中使用 GPGPU API,会发生什么情况
- E/libEGL:调用没有当前上下文的 OpenGL ES API (每个线程记录一次) - Android/SDL
- 如何监视应用程序进行的Windows系统API调用?
- 如何在 go 中调用带有 .lib 和.dll文件的预构建 API
- UNIX API 调用:使用 read() 函数打开文件并将其打印到屏幕上会增加额外的随机字符
- 从C++调用Microsoft视觉 API 时出错
- 使用JNI调用API创建一个java7JVM
- 从 Python 调用 API 时dynamic_cast失败C++