‘ptr’ is not a member of ‘hv::WebSocketClient’
时间: 2024-01-05 07:16:51 浏览: 92
C++11 std::shared_ptr总结与使用示例代码详解
抱歉,可能是我之前的回答有误。在 libhv 库中,WebSocketClient 类并没有定义 ptr 类型的智能指针,因此会出现 `'ptr' is not a member of 'hv::WebSocketClient'` 的编译错误。
为了解决这个问题,您可以将示例代码中的 `std::make_shared<hv::WebSocketClient>()` 替换为 `std::shared_ptr<hv::WebSocketClient>(new hv::WebSocketClient())`,使用标准库的 shared_ptr 来创建智能指针。具体代码如下:
```cpp
#include "WebSocketClient.h"
#include <iostream>
#include <memory>
using namespace hv;
using namespace std;
int main() {
// 创建 WebSocket 客户端对象
shared_ptr<WebSocketClient> client(new WebSocketClient());
// 连接服务器
if (!client->connect("ws://192.168.1.103:80")) {
cerr << "Failed to connect server!" << endl;
return -1;
}
// 打开设备
auto open_callback = [](const string& data, WebSocketChannel::ptr channel) {
// TODO: 处理返回值
cout << "Open callback: " << data << endl;
};
client->send("{\"position\": 101}", open_callback);
// 获取数据
auto getdata_callback = [](const string& data, WebSocketChannel::ptr channel) {
// TODO: 处理返回值
cout << "Getdata callback: " << data << endl;
};
client->send("{\"position\": 101, \"count\": 0, \"isclose\": false}", getdata_callback);
// 关闭设备
auto close_callback = [](const string& data, WebSocketChannel::ptr channel) {
// TODO: 处理返回值
cout << "Close callback: " << data << endl;
};
client->send("{\"position\": 101}", close_callback);
// 断开连接
client->close();
return 0;
}
```
希望这次能够成功编译通过。
阅读全文