有什么方法可以将 protobuf 对象传递给 shared_ptr?

Is there any method to pass protobuf object to shared_ptr?

我想将 protobuf 消息“SmConfig”复制到 shared_ptr,如下所示:

SignalMachine::SignalMachine(SmConfig* sm_config) {
  sm_config_ = std::make_shared<SmConfig>();
  sm_config_.CopyFrom(*sm_config);
}

class SignalMachine {
 private:
  std::shared_ptr<SmConfig> sm_config_;
}

因为我需要在“classSignalMachine”中保留SmConfig(protobuf),所以我使用了上面的方法,是否合理?其实我并没有在官方文档中找到对应的描述

你可以使用复制构造函数:

SignalMachine::SignalMachine(SmConfig* sm_config) {
  if (sm_config != nullptr)
    sm_config_ = std::make_shared<SmConfig>(*sm_config);
  // else error handling
}