gpt4 book ai didi

c++ - 使用 typedef 结构 boost shared_ptr

转载 作者:行者123 更新时间:2023-11-30 01:46:53 28 4
gpt4 key购买 nike

我在使用 libmodbus 时遇到编译问题.我有以下代码

boost::shared_ptr <modbus_t> ctx;
ctx->modbus_new_tcp(ip_address.c_str(), modbus_port);

但我得到以下错误

error: invalid use of incomplete type 'struct _modbus'

它指向modbus.h中的这一行

typedef struct _modbus modbus_t;

我对此了解不够,无法解决我的问题。你觉得它是什么?这个库与智能指针不兼容吗?他们告诉你使用常规指针

modbus_t* ctx;

谢谢。

最佳答案

你可以——或许——使用一个

if (std::unique_ptr<modbus_t, void(*)(modbus_t*)> mb(modbus_new_tcp(ip_address.c_str(), modbus_port), &modbus_free)) {

modbus_connect(mb);

/* Read 5 registers from the address 0 */
modbus_read_registers(mb, 0, 5, tab_reg);

modbus_close(mb);
} // modbus_free invoked, even in the case of exception.

当然,这是假设存在唯一所有权。

关于c++ - 使用 typedef 结构 boost shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487853/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com