gpt4 book ai didi

c++ - 如何在不复制数据且不暴露指针的情况下向用户检索数据对象?

转载 作者:行者123 更新时间:2023-11-30 01:51:25 24 4
gpt4 key购买 nike

我正在尝试构建一个包含数据结构的类,其中包含我的数据对象。

用户可以使用我的类中的函数来检索此对象之一(通过对象键)。

我可以不将对象复制到返回对象并且不返回指针(这样用户就不能更新我的数据)吗?

我不关心包装或更改我的数据对象来解决这个问题。

为了简单起见,我用 CData 简单对象编写了一个数组,这是我的代码:

class CData
{
public:
CData() {};
virtual ~CData() {};

CString m_sID;
CString m_sName;
};

class CMyDataContainer
{
public:
CMyDataContainer() {};
virtual ~CMyDataContainer() {};

CData GetDataByID(CString sID);
void AddData() {};

private:
CData ArrAllData[1000];
};

CData CMyDataContainer::GetDataByID(CString sID)
{
CData EmptyDataToRetrive;

// Find the data object
for (int i = 0; i < 1000; i++)
{
if (ArrAllData[i].m_sID == sID)
{
// Copying the object I've found to a new object
// Can I avoid this copy and return the user an object he can use but dont change
// My original object?
return ArrAllData[i];
}
}

return EmptyDataToRetrive;
}

最佳答案

返回一个常量引用:

const CData& CMyDataContainer::GetDataByID(CString sID)

这是指示您的用户不应修改它的正确语义。

关于c++ - 如何在不复制数据且不暴露指针的情况下向用户检索数据对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com