没有办法用copyin而不是set_allocated_something来设置protobuf元素?

在我生成的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