我有一个’MyClass’类,它包含一些存储在std :: maps中的数据.标准地图包含指向对象的指针,例如
private: std::map<int,Object*> m_data;
我想将数据暴露给外界但我不希望其他类/函数能够修改(i)map m_data或(ii)m_data中的值所指向的对象.我想要一些假设的函数,比如getDataBegin(),它返回一个迭代器,而不是具有上述属性的数据.例如,我希望以下伪代码示例失败:
iterator_type itr = myclass.getDataBegin(); erase(itr); // not allowed because we cannot modify m_data; itr.second = NULL; // not allowed to change content of m_data (falls under first rule) itr.second->methodWithSideEffect(); // not allowed because changes content of object pointed to.
简而言之,您可以说我是在对某些成员数据进行只读访问之后.这有可能以一种很好的方式,如果是这样的话,我怎么能这样做呢?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。