对于不允许修改数据的shared_ptrs容器,我们可以编写一个getter函数来获取容器中的数据。下面是一个示例代码:
#include <iostream>
#include <memory>
#include <vector>
class Data {
public:
Data(int value) : m_value(value) {}
int getValue() const {
return m_value;
}
private:
int m_value;
};
class Container {
public:
void addData(std::shared_ptr<Data> data) {
m_data.push_back(data);
}
const std::vector<std::shared_ptr<Data>>& getData() const {
return m_data;
}
private:
std::vector<std::shared_ptr<Data>> m_data;
};
int main() {
Container container;
container.addData(std::make_shared<Data>(1));
container.addData(std::make_shared<Data>(2));
container.addData(std::make_shared<Data>(3));
const std::vector<std::shared_ptr<Data>>& data = container.getData();
for (const auto& ptr : data) {
std::cout << ptr->getValue() << std::endl;
}
return 0;
}
在上面的代码中,我们定义了一个Data类来表示要存储的数据,然后定义了一个Container类来管理这些数据。Container类中的addData函数用于向容器中添加数据,getData函数用于获取容器中的数据。
注意到getData函数的返回类型是const std::vector<std::shared_ptr<Data>>&,这表示返回的容器是一个常量引用,即不允许修改容器中的数据。这样做可以确保外部代码无法修改容器中的数据,只能读取数据。
在主函数中,我们首先向容器中添加了三个Data对象,然后通过getData函数获取容器中的数据,并使用循环遍历打印出每个Data对象的值。
这样,我们就实现了一个不允许修改数据的shared_ptrs容器,并编写了一个getter函数来获取容器中的数据。
领取专属 10元无门槛券
手把手带您无忧上云