如何管理其他对象之间的POD对象?

时间:2014-04-29 13:45:36

标签: c++ oop

这是一个基本的科学计算程序,我对c ++相对较新。

所以,让我说我有一个数据类。 (它主要只是在从文件中读取数据时保存数据)。 这是一个简单的表示:

class Data {
 public:
    Data(string filename){/*some stuff*/};
    double data(){return data_;};
    void GetDataFromFile();
 private:
    double data_;
};

我有一些主要代码可以设置流程,可能如下所示:

datastuff = std::unique_ptr<Data>(new Data(filestring));

我正在使用一个独特的ptr,因为我不想担心删除,并且数据的生命周期与此主要代码中的数据流量变量相关联(datastuff是一个类成员变量)。 许多想要读取数据的对象是为了执行操作。

问题是,如何让其他类/对象访问这些数据? 应该是这样的:

class Solve {
 private:
    Data* data_
 public:
    void DataIn(Data* d){data_ = d;};
};

拨打电话:

solve.DataIn(datastuff.get());

这是对的吗?

请注意,我有很多对象,例如&#34; solve&#34;,他们都需要能够查看相同的数据。

此外 - 我不希望他们中的任何人能够修改数据。我应该采取不同的方法吗?

编辑:基于下面的评论,试图使示例更清晰

1 个答案:

答案 0 :(得分:0)

    std::shared_ptr<Data> data_

最终成为此案的最佳选择。

随着项目的发展,我需要与数据进行更多的互动,因此需要更加不确定的所有权模型。