【发布时间】:2018-12-18 18:21:19
【问题描述】:
我正在尝试创建一个简单的静态类库,以将 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());
});
}
};
这看起来显然是错误的,因为编译器会抛出错误:
'ptr' 未被捕获
但这正是我想要达到的目标。
我该怎么做?
【问题讨论】:
-
您需要按照错误消息中的说明操作并捕获
ptr -
是什么阻止你捕获
ptr? -
你需要把ptr放在方括号里:en.cppreference.com/w/cpp/language/lambda
-
std::function非常适合保持回调。
标签: c++ websocket cpprest-sdk