这是一个基本的科学计算程序,我对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;,他们都需要能够查看相同的数据。
此外 - 我不希望他们中的任何人能够修改数据。我应该采取不同的方法吗?
编辑:基于下面的评论,试图使示例更清晰
答案 0 :(得分:0)
std::shared_ptr<Data> data_
最终成为此案的最佳选择。
随着项目的发展,我需要与数据进行更多的互动,因此需要更加不确定的所有权模型。