【问题标题】:C++ shared structure - Good practiceC++ 共享结构 - 良好实践
【发布时间】:2018-03-22 18:17:35
【问题描述】:

我有一个从 JSON 文件中读取的结构(可能很重)。

这个结构是从我正在使用的各种类对象中使用的。 我担心的是:

我应该如何将此结构传递给构造函数以便他们能够(仅)读取它?同时避免复制数据?

我首先发现自己将原始指针传递给结构,有人看到我的代码并告诉我每次触摸原始指针时都拍拍我的手。

那么,这样做的适当方式是什么?参考? shared_ptr?

【问题讨论】:

  • 常量参考。
  • @liliscent 谢谢,我可以有一个 const ref 类成员,对吧?

标签: c++ struct constants shared-ptr


【解决方案1】:

首先,打那个人的脸。原始的非拥有指针没有任何问题

对于您的特定情况,使用 const 引用可能会更好,甚至可能更惯用,具体取决于您的实际代码。没看过代码,不能多说你的具体情况。

【讨论】:

  • 我可能想跳过打我经理的部分,但是谢谢,我可以使用这个 const ref 来初始化一个 const ref struct 类成员,对吗?
  • 是的,你可以这样做。实际上我不会,因为 const 引用可以绑定到临时对象,因此您将持有对临时对象的引用。对于任何比调用站点更长寿的东西,我会使用指针。'
  • 那么我就安全了,我所有的对象都存在于一种主函数调用中。
  • 我想说原始指针的问题是,如果指向的对象被删除而其他代码仍然可以访问它,它们可能会变成悬空指针。
  • 我选择使用智能指针,从那时起我就没有遇到任何悬空引用(或内存泄漏)问题。
猜你喜欢
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多