在我生成的protobuf类上,我只看到set_allocated_something
。
示例:
syntax = "proto3";
import "uuid.proto";
import "openvpn.proto";
package message;
message VPN {
UUID uuid = 1;
oneof vpn {
OpenVPN openVPN = 2;
}
}
然后我有:
OpenVPN openVPN;
//fill openVPN
auto vpnAny = someObject.add_vpns();
vpnAny->set_allocated_openvpn(&openVPN);
下面的代码崩溃,因为我添加了一个我拥有其数据的对象,然后set_allocated_openvpn
将首先删除它,然后作用域将第二次删除它。
另一种选择是这样做
OpenVPN* openVPN = new OpenVPN();
但是我想避免原始指针+ new
。
为什么协议不能生成一个复制数据的方法呢?为什么我只能传递分配的数据指针?我该如何处理这种情况呢?
转载请注明出处:http://www.xinruixiangtm.com/article/20230526/1258266.html